引き続いてロックオンシステムですよ
ちょいと解らない部分があったので
これまたYoutubeのロックオンシステム解説動画を参考に
作ってみました
流れ的には簡単で
ターゲットが複数ある場合は
該当ブループリントを収得
ループで回して配列に入れ
距離とレイとの当たり判定で障害物が無い事を確認して
また配列に入れる
ってな流れをとって
その後、ターゲットと自分の位置からFind Lock at Rotationで向きを習得して
Set Control Rotationでセットすれば
ターゲットに向くのが出来るってな感じですね
ただ、Set Control Rotationでセットしちゃうと
ロックオン時に視点の回転が出来ないのが難点なのと
ブループリントが長いから、関数にしたんですが
関数だとTimelineやInput系の情報が使えないみたいなので
ロックオン時に視点の補間をする方法が思い浮かばないってのが難点
あとは気をつけなければいけないのが
配列の処理
どちらかと言うと、C#のList<>に近く
いい感じの関数が使用できますが
そのループなり追加なりに繋ぐ時の配列は
コマンドを出した後に繋ごうとすると
配列の型が合わないってエラーが出るので
配列オブジェクトから引っ張って
コマンドを出さなくてはいけないってところに
気をつけなきゃダメってな事ですよ
これの解決に結構時間くいました・・・
ロックオンは出来ましたが
SetControlRotationを使わない感じも模索しないと
使いにくいロックオンになってしまう気がしますよ
追記
カメラのスムーズな変換は
イベントグラフでTick値を変数にして
そいつを線形補間につなげることにより解決しました
キャラクターは相変わらず一瞬で向いてしまいますがね
んで、ロックオン中のカメラ操作ですが
NewInputを無視するってな項目があるので
それを解除するとある程度操作できるようになります
ただ、毎フレームターゲットの方向を向く処理なので
移動量は微々たるものですがね
とりあえず、ロックオンの導入と解除の時に
ゆっくり向ければ完成って言ってもOKそうなんですがね・・・
コメント