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

妹でもわかるUnrealEngine4

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

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

高低差とかジャンプとか色々考慮してナビメッシュで追跡する案

「問題はどうやって高さの違いを無視するかということなんだけど」

妹「敵の方を大きくするっていうのは駄目だぞ。ちっちゃい敵も居るんだから」

「そしたら高さ、つまりZ軸を追いかけるキャラと同じにしちゃったらどうだろ? 追いかけられる側のZを使うから空中を目指してしまうわけで」

妹「うーん、それって平面の時はいいけど、もともと地面が斜めになってたら変なことにならない?」

「……なる」

妹「ならない方法を考えてくれ。あとジャンプしてる場合も考慮して」

「うーん、難しいことを言うなあ。とりあえず足元にある地面を基準にすれば良さそうだから」

f:id:una_unagi:20150818174332p:plain

「こういう感じでどうでしょ?」

妹「これがどういう感じかよくわからないので説明してくれ」

「まず追いかける対象、プレイヤーキャラの場所をGetActorLocationで持ってくる」

妹「それは今までと同じだね」

「次にプレイヤー位置から真下、Z軸のマイナス方向に向かってレイを飛ばす」

妹「レイってなんだっけ?」

「その方向に何かないか探すやつだよ。プレイヤー自身は無視して、Trace設定がVisibilityのコリジョンがないか探す。見つかったらレイがぶつかった地点を目標地点として記憶する。あとはビヘイベアツリーからMoveToする流れで同じ」

妹「これだと足元だから追いかける側より下になるけど大丈夫なの?」

「下にずれる分には問題なさそう。地面より下までいくと、立体交差みたいになってる時に問題あるだろうけど」

妹「真下が空中になる崖っぷちとかでも上手く追ってくれないかも」

「レイの飛ばし方を変えれば対応は出来る、それやるにはコリジョンの形とか大きさとか調べないといけないから大変」

妹「なるほどなるほど。でも今回は2Dゲームだから結局使わないかなこれ。真横に追いかけるだけなら別にナビメッシュなくても作れるし」

「2Dゲームでもレベルを上から見る前提なら使えそうな気がする。パックマンとかボンバーマンとか」