MoveToやAIMoveToで後ろ向きに移動させたい。

MoveToやAIMoveToで後ろ向きに移動させたい。いわゆる後ずさりというやつです。

質問に主語を入れてください。『何を』移動させたいのですか?現状はどういうところまで自分で調べてみましたか?質問をする際の最低限の情報を必ず含めるようにしてくれないと、回答することができません。

後ずさりさせたいのはAIControllerで動かしているCharacterです。先に前方方向に移動させて、初期位置に後ずさりで戻したいのです。

前方に移動した位置から初期値の方向へのベクトルを求めtickで少しづつ移動させて、後ずさりの動作にはなりましたが、いかんせんtickでの動作の為、当然ながらfpsの高い物と低い物ではかかる時間が異なります。tick timerでしたかね?0.02くらいにして色々試しました。いろいろやった結果。そもそもこんな事しなくてもスマートな方法があるんではないだろうか?という事で質問した次第です。

「誰に対して後ずさり」をさせたいのかが書かれていないので「プレイヤーに対して後ずさりをする」ことを想定して書いてみます。

MoveToやAIMoveToでは移動方向にAIキャラクターが向いてしまうのでAIキャラクターの向きを固定する必要があります。これにはAIキャラクター側のTickで毎フレーム、プレイヤーへ向かう回転を求めてSetActorRotationする方法とAIControllerから呼び出せる「SetFocus」を使う方法があります。

一番手軽な方法は「SetFocus」を使う方法です。

以下のようにSelfを渡したGet AI ControllerノードをSetFocusノードのTargetに接続しNew Focusに「フォーカスする対象」ここではプレイヤーの参照を渡します。これによりAIキャラクターは常にプレイヤーの方向を見続けるようになるので、あとは後ずさる位置をMoveToやAIMoveToに渡せば後ずさるような表現ができると思います。

297811-hogefuga.png


フォーカスをする必要がなくなった場合はSetFocusノードを呼び出す手順と同様にSelfを渡したGet AI Controllerノードを「ClearFocus」に接続します。

297812-fogg.png

1 Like

おお。ありがとうございます。SetFocusは知りませんでした。早速やってみます。ありがとうございました。