妹でもわかるUnrealEngine4

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

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

別の物体や崖っぷちに当たると反転する敵キャラ

imoue.hatenablog.com

f:id:una_unagi:20160325215511g:plain

妹「前に言ってた、敵キャラのベロシティを調べて、0だったら反対を向くようにしたやつが出来たよ。でもなんかおかしいというか、途中でりんごっぴーと、なしっぴーが、並んで歩いちゃうんだよ。必ずこうなるわけじゃないんだけど……」

「タイミングの問題かも。何かにぶつかるとベロシティが0になるっていうの、あれ厳密に言うと0になる1フレーム前にぶつかってることがあるんだよ。例えば10cm動くところで、5cm先に物があれば5cmは動く。その状態で、次のフレームにはちゃんと動くと、結局ベロシティが0になるタイミングがなくて、反転もしなくなる」

妹「じゃあ0じゃなくて、ベロシティが予定より減ったタイミングでやった方がいいのかな?」

「それを正確に計算するのは難しそうだから、今回はぶつかった時にちょっと待ってから反転するという仕組みを追加してみた」

f:id:una_unagi:20160325220306p:plain

f:id:una_unagi:20160325220317g:plain

妹「そうそう。こんな感じになってほしかった」

「ぶつかった場合はDelayで少し待って、その間に次のティックが開始しないようにDoOnceを使って止めてある。こうすると後から来た方もベロシティが0になるまでぶつかるから、両方とも反転するようになる。その分ちょっと待ち時間ができちゃうけど、反対側を向くタイミングだから不自然じゃないと思う」