Unity事例ノート

UNITY

誤差をつけてあえて命中率を下げる

ターゲット(標的)をめがけて発射したとき、正確に命中するのは、ある意味で当たり前の動作です。

今回は、発射のタイミングであえて誤差をつけて、命中率を下げるような仕組みをつくってみましょう。

まず先に、完成作品を見てみます。

発射するたびに、空のオブジェクトがCubeの周りをランダム移動します。

その空のオブジェクトを標的とすることで、誤差をつけています。

ランダムで周囲を移動する

Cube、Sphere、GameObject(空のオブジェクト)、Planeをそれぞれ1つずつ用意します。

CubeとSphereは、ある程度の距離を取りましょう。

CubeとSphereにリジッドボディを追加します。

OffsetPosition.csを作成し、GameObject(空のオブジェクト)に追加します。

OffsetPosition.csのコードを以下のように書きます。

GameObjectのインスペクターを確認しましょう。

ターゲットのフィールドが追加されているので、ここにはCubeを入れます。

発射のタイミングで誤差をつける

次はボールの方をつくっていきましょう。

SphereShot.csを作成し、Sphereに追加します。

SphereShot.csを書きます。

Sphereのインスペクターを確認します。

ターゲットのフィールドには、GameObjectを入れましょう。

プレイしてみます。

ボールの発射は1回しかできないので、何回かプレイしてみます。

1回目。

2回目。

ボールを発射するたびに、GameObject(空のオブジェクト)が動きます。

これで、本来のターゲットであるCubeへの命中率は下がりました。