Unity公式チュートリアルSurvival Shooter WITH PK Chapter.13「敵に射撃がヒットした時、ノックバックする」

13.敵に射撃がヒットした時、ノックバックする

今回の実装は大きく2つ。本当は1つでもよいのだが、よりコンセプトをとがらせるため追加の実装を行う。
* 銃から発射しているRayが敵にヒットした時、Rayの方向に敵を移動させる
* ノックバックの距離と角度にすこしランダム性を持たせる
* 予定調和にせず緊張感を保たせたい

Rayが敵にヒットした時、Rayの方向に敵を移動させる

ヒットした時の処理に、Rigidbody.AddForce(shootRay.direction)を追加すれば実装できると思っていたが、試してみたところAddForceが効いている感じがない。

公式リファレンスを確認してみると、NavMeshAgentを付与したキャラクターを動かしたいときには、NavMeshAgent.velocityを使えとのこと。

ではそれを踏まえてもう一度。PlayerShootingクラスをいじっているが、EnemyMovementクラスに新たなメソッドを用意してもいいかもしれない。
武器種によってノックバック距離を変えるならPlayerShootingくらす、エネミーによるならEnemyMovementクラスに書くのがよいのだろうが、両方でやりたい場合はどうしたらいいだろうか。今は分からないので棚上げにして、実装を進めよう(EnemyMovementクラスに記述して、PlayerShootingクラスから調整用の引数を渡して実行、が正解な気がする)。

挙動はこんな感じ。

ノックバックの距離と角度にランダム性を持たせる

上まで出来ていればそう難しくない。
距離はnbPowerの取る値をランダム化させれば良いし、角度もshootRay.directionのxとzの値に少しランダム値を±させてやればよい。

これで実装できたのがコチラ。値の幅は調整の余地があるけども、ランダムでノックバックするようになりました。ただ、触ってみた感触もしかしたらランダムいらないかも。思ったより違和感がある。値の調整でも違和感が拭い去れなければ削除しよう。

次回はコチラ

前回はコチラ

1件のコメントがあります

コメントを残す

メニューを閉じる