Unity事例ノート

UNITY

落としたボールを1秒後に補充

プレーヤーの前でボール(Prefab)を保持し、スペースキーを押せば落下。

落としてから1秒後に、またボールがセットされるしくみを、スクリプトで作成します。

関連記事:
取ったオブジェクトを前で持ち続ける
オブジェクトを持ったり置いたりする
保持したボールをプレーヤーと同じ向きで発射
静止中のオブジェクトをクリックで飛ばす
出現してから1秒後に落下する
Invokeを使ってn秒後に関数を実行する
落下スピードをランダムにする

オブジェクトの用意

Cubeを作成し、サイズと位置を変更します。

Cubeの前方に、ボールのセットポイントを、子オブジェクトとして作成します。

Cubeを右クリックして、空のオブジェクトを作成。

オブジェクト名をSetPointに変更し、Zを-1にします。

わかりやすいように、アイコンを設定します。

シーンビューの真横から、このように見えています。

続いて、Sphereを作成し、リジッドボディを追加します。

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

BallDrop.csを記述します。

これは、ボールが生成された際のプログラムです。

SetPointを親オブジェクトとして持つため、生成後は一緒に移動します。

スペースキーが押されると、親子関係を切り離し、キネマティックをOFFにして、ボールを落下させるしくみです。

Sphereをプロジェクトビューにドラッグ&ドロップし、プレハブ化します。

Sphereの元データは削除します。

保持したPrefabを落とせば、新しいPrefabを補充

続いて、プレーヤー側のスクリプトを作成します。

CubeMove.csを作成し、Cubeに追加します。

CubeMove.csを記述します。

SetPointのフィールドに、SetPointを入れます。

Ballのフィールドに、Sphereを入れます。

ゲームプレイして、左右キーで移動、スペースキーでボールを落とします。

Invokeによって、スペースキーが押された1秒後に、BallSet()を実行。

SetPoinitの位置にボールが生成されます。

またここでは、連射防止のためにtimeを作っています。

これにより、いくらスペースキーを連打しても、1秒経過しなければ、ボールを落とすことはできません。

関連記事:
取ったオブジェクトを前で持ち続ける
オブジェクトを持ったり置いたりする
保持したボールをプレーヤーと同じ向きで発射
静止中のオブジェクトをクリックで飛ばす
出現してから1秒後に落下する
Invokeを使ってn秒後に関数を実行する
落下スピードをランダムにする