妹、キャラクターの動きを強制的に止めたい
「双方向のワープは出来るようになった?」
妹「なったよ。こんな感じで、チョウチョにさわるとワープするし、1回離れないとワープしない」
「おーちゃんと動いてますね」
妹「いやちゃんとは動いてないんだよ」
「駄目なの?」
妹「これワープする時はボタン押してないんだけど、ワープした時の勢いのまま反対側に動いてるでしょ。いったんそこにピタッと止めたいんだよ」
「それは多分Velocityの設定をすればいいはず」
妹「べろしてぃ?」
「今どっちに向かってどれぐらいの強さで動いてるかという数字。一定の間隔で……多分1フレームごとにだと思うんだけど、その量だけ移動する。ロケーションと同じ3次元Vector型」
妹「それどこにあるの?」
「うーんと、Movementコンポーネントの中にあるのを使えば良さそう。こんな感じにすると止まる」
「こうやってSet Velocityで全方向に0を設定したから動かなくなる」
妹「動かなくなったら困るのでは?」
「それまでの動きの影響がなくなるだけだから。空中で止めたとしたら、重量の影響で勝手にVelocityの下方向への数字が増えるし、左右を押せば同じように増えるよ」
妹「そういうの勝手に増やしたくない時は?」
「一時的に重力設定を0にしたり、CharacterMovementをWalkingじゃなくてFlyingにしたりする。その状態で移動操作も無効にすればピクリともしなくなる」
妹「なるほど。でも普段の移動にVelocityを使わないのはなんで? 使った記憶ないんだけど」
「弾の発射とかでは使ってるはず。どっち向きに飛ばすかという初期設定。あと強引に動きをねじ曲げる時には使う。それ以外の動きでは別のブループリントとか設定とかで関係的にVelocityを操作してる。思ったとおりに動いてるならどっちの方法でもいいんだけど」
妹「これは何かに使いそうだからメモしとこう」