妹でもわかるUnrealEngine4

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

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

コリジョンの高さに差があると、ビヘイビアツリーのMoveToが効かないことがある

妹「2Dでナビメッシュが動かない理由調べてたんだけど、なんか追いかけれるキャラを自作のやつから、デフォルトの2DScrollなんとかに変えたら、普通に追っかけられるようになったんだよ。なんでだろ?」

「動くってことはやり方はあってるってことだから、キャラの違うところを1個1個調べてみましょうか」

妹「違うところっていってもなあ、ブループリントとか色々違うし」

「そういうのじゃなくパラメータの違いのような気がするんだけど。とりあえずコリジョンを同じにして……あ、動いた」

妹「えー……なんで大きさ……」

「うーん、あー、これひょっとして高さが違うせいかなあ。プレイヤーの位置をGetActorLocationで調べて、同じ位置に移動しようとするわけだけど、よく考えたらこの位置って、カプセル型コリジョンの中心なんだよね。追いかける方も同じ。だけで追いかける方が高さが低いから、同じ場所にいてもZ軸の値が変わる」

妹「高さが違っていると駄目なの?」

「高い位置を目的地にして動くってことは、ビヘイベアツリーのMoveToで追いかけるとき、空中に行かなきゃいけないってことだと思うんだよ。ビヘイベアツリーにジャンプの仕組みとかはないし、これ空中だから無理だなって話になって諦めてるんじゃないかな?」

f:id:una_unagi:20150817222906p:plain

妹「そういえば追いかけてる時でも、ジャンプ中で空中に居る時は追ってこなかったような。なんで諦めちゃうんだ……」

「という仮説を実証するために、コリジョンは元に戻して、MoveToの基準になってるプレイヤー座標を少し調整する。そのまま使うんじゃなく、Zをもう少し下に、歩いていける範囲になるようにする」

f:id:una_unagi:20150817222932p:plain

「この状態で実行すると、行き先が行動範囲にある座標だと認識して、追いかけてくれるようになる」

f:id:una_unagi:20150817225258g:plain