出現したオブジェクトが、1秒後に落下するように、スクリプトを作成してみましょう。
クリックした位置にPrefabを生成。
表示してから1秒経過すると、IsKinematicがオフになり、ボールが落ちていきます。
関連記事:
動きが止まればn秒後に呼び出す
デリゲートを使ってn秒後に実行
Invokeを使ってn秒後に関数を実行する
1秒後にPrefabを削除する
数秒後にオブジェクトを出現させる
落としたボールを1秒後に補充
スタートから3秒後にプレーヤーを追いかける
1秒経過すればIsKinematicをオフにする
Sphereを作成し、リジッドボディを追加します。
BallDrop.csを作成し、Sphereに追加します。
BallDrop.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class BallDrop : MonoBehaviour { private Rigidbody rb; private float time; void Start() { rb = GetComponent<Rigidbody>(); rb.isKinematic = true; time = 0; } void Update() { time += Time.deltaTime; if(time > 1) { rb.isKinematic = false; } } } |
Sphereをプロジェクトビューにドラッグ&ドロップして、プレハブ化します。
Sphereの元データは削除しておきます。
空のオブジェクトを作成します。
SpawnBall.csを作成し、GameObject(空のオブジェクト)に追加します。
SpawnBall.csを記述します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class SpawnBall : MonoBehaviour { [SerializeField] GameObject ball; private Vector3 mousePosition; void Update() { if (Input.GetMouseButtonDown(0)) { mousePosition = Input.mousePosition; mousePosition.z = 10.0f; Instantiate(ball, Camera.main.ScreenToWorldPoint(mousePosition),Quaternion.identity); } } } |
Ballのフィールドに、Sphereのプレハブを入れます。
ゲームプレイして、クリックしてみましょう。
表示されたプレハブが1秒後に落下していきます。
関連記事:
動きが止まればn秒後に呼び出す
デリゲートを使ってn秒後に実行
Invokeを使ってn秒後に関数を実行する
1秒後にPrefabを削除する
数秒後にオブジェクトを出現させる
落としたボールを1秒後に補充
スタートから3秒後にプレーヤーを追いかける