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に渡せば後ずさるような表現ができると思います。
フォーカスをする必要がなくなった場合はSetFocusノードを呼び出す手順と同様にSelfを渡したGet AI Controllerノードを「ClearFocus」に接続します。
おお。ありがとうございます。SetFocusは知りませんでした。早速やってみます。ありがとうございました。