ろろろっくおん

引き続いてロックオンシステムですよ

 

ちょいと解らない部分があったので

これまたYoutubeのロックオンシステム解説動画を参考に

作ってみました

流れ的には簡単で

ターゲットが複数ある場合は

該当ブループリントを収得

ループで回して配列に入れ

距離とレイとの当たり判定で障害物が無い事を確認して

また配列に入れる

ってな流れをとって

 

その後、ターゲットと自分の位置からFind Lock at Rotationで向きを習得して

Set Control Rotationでセットすれば

ターゲットに向くのが出来るってな感じですね

 

ただ、Set Control Rotationでセットしちゃうと

ロックオン時に視点の回転が出来ないのが難点なのと

ブループリントが長いから、関数にしたんですが

関数だとTimelineやInput系の情報が使えないみたいなので

ロックオン時に視点の補間をする方法が思い浮かばないってのが難点

 

あとは気をつけなければいけないのが

配列の処理

どちらかと言うと、C#のList<>に近く

いい感じの関数が使用できますが

そのループなり追加なりに繋ぐ時の配列は

00

コマンドを出した後に繋ごうとすると

配列の型が合わないってエラーが出るので

配列オブジェクトから引っ張って

01

コマンドを出さなくてはいけないってところに

気をつけなきゃダメってな事ですよ

 

これの解決に結構時間くいました・・・

 

ロックオンは出来ましたが

SetControlRotationを使わない感じも模索しないと

使いにくいロックオンになってしまう気がしますよ

 

追記

カメラのスムーズな変換は

イベントグラフでTick値を変数にして

そいつを線形補間につなげることにより解決しました

キャラクターは相変わらず一瞬で向いてしまいますがね

 

んで、ロックオン中のカメラ操作ですが

NewInputを無視するってな項目があるので

それを解除するとある程度操作できるようになります

ただ、毎フレームターゲットの方向を向く処理なので

移動量は微々たるものですがね

 

とりあえず、ロックオンの導入と解除の時に

ゆっくり向ければ完成って言ってもOKそうなんですがね・・・

コメント

タイトルとURLをコピーしました