読者です 読者をやめる 読者になる 読者になる

妹でもわかるUnrealEngine4

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

毎日更新? 妹に説明するために書いてるけど、たまにわかってない場合もあるUnrealEngine4を中心としたゲーム制作の話。略すとイモリアル

エビフライを反復横跳びさせる

3Dゲーム UE4.13 学習資料 アルゴリズム

「エビフライのジャンプ方法についてこのところ悩んでて、CharacterMovementを使うかとか、スプライン関数はどうかとか、色々考えてたんだけど、最終的にこの本のアルゴリズムを使うことにした」


アクションゲームアルゴリズムマニアックス : 松浦 健一郎, 司 ゆき : 本 : Amazon.co.jp

「2Dのアクションゲームを作る時に使いそうなアルゴリズムがまとまってて、非常に便利な本なんだけど、今見たら絶版になってるね……。今入手可能な本を紹介したかったんだけど、ちょっと思いつかなかった。」

妹「それはアンリアルエンジンの本なの?」

C++で書いてある。でもC++用の本じゃなくて、たまたまC++で書いてあるだけって感じだし、同じことをブループリントで再現できる。流用禁止とか書いてなければ他のアクションゲーム用入門書とかでもいいんだけど」

妹「C++むずかしい……」

「そうなるよね。実際は計算ノードとブランチノードの分岐だけしか使わないシンプルなものだけど、それしか使わなくていいとわかるまでがむずかしそう。いまの妹なら読めそうな気もするんだけど。とりあえずブループリント化の例としてはこんな感じになる」

f:id:una_unagi:20160901004822p:plain
f:id:una_unagi:20160901004827p:plain

「この本にはいくつかジャンプ処理の例が載ってるけど、今回は一番単純な固定長ジャンプ。64ページから65ぺージに掲載されているプログラムを使った。入力イベントで処理すべき内容と、イベントティックで処理すべき内容が混ざってるので、それぞれ分離してブループリントにする」

妹「でもこれ2Dのだから、そのままじゃ駄目なのでは?」

「見た目はそうだけど動きはこれ2Dだから。上がYのマイナス方向から、Zのプラス方向に変わってたりするんで、その調整はしてる。3Dの場合でも向きを単位ベクトルに変えたりすれば流用出来るけど、その場合多少難易度が上がる」

f:id:una_unagi:20160901002205g:plain

「するとこうなる」

妹「ピョインピョインしてるね」

「実際には横の移動制限付け忘れたんで、画面外まで飛んでいったりもするけど、基本設計はこれでいいはず。もっとUE4っぽくてシンプルな方法もあるかもしれないけど、それ探すのめんどくさかったのと、ジャンプ自体は単純な処理だからこういう実装にした」

妹「単純じゃない処理とは?」

「今回は地面の高さだけ指定してるけど、地形のコリジョンを使う場合は着地のあたりがかわってくるし、上昇中に壁にあたる場合も違ってくる。あと他の物体にUE4の重力処理がかかってる場合、自キャラもそれに合わせないと気持ち悪いかも。今回はエビフライだけで、何も遮るものがないから」

妹「猫は遮ってくるのでは?」

「それが面倒だから、猫の手のコリジョンはオーバーラップ型にするか自前計算だけにして、ジャンプ中も無敵にしようかと。そしたら猫との衝突の問題は考えなくていい」