触れた相手オブジェクトが、n秒後に重力で落下するように、スクリプトを作成しましょう。
今回の例では、Sphereにぶつかると、2秒後にUseGravityがオンになり、落下します。
関連記事:
触れたオブジェクト(複数)をn秒後に全削除
触れた相手をn秒後に削除する
乗ったオブジェクトをn秒後に消す
触れた相手のオブジェクト名を取得
触れた相手のコライダーを削除(無効にする)
ぶつかった相手が2秒後に落下
CubeをSphereを作成して、少しずらして配置。
両方にリジッドボディを追加し、UseGravityのチエックを外します。
ぶつかったときCubeが回転しないように、Constraintsにチェックを入れましょう。
CubeMove.csを作成し、Cubeに追加します。
CubeMove.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 26 27 28 29 30 31 32 33 34 35 |
using System.Collections; using System.Collections.Generic; using UnityEngine; public class CubeMove : MonoBehaviour { Rigidbody sphereRb; float speed = 1.0f; void Update() { float moveX = Input.GetAxis("Horizontal") * Time.deltaTime * speed; float moveZ = Input.GetAxis("Vertical") * Time.deltaTime * speed; transform.position = new Vector3 ( transform.position.x + moveX, transform.position.y, transform.position.z + moveZ ); } void OnCollisionEnter(Collision other) { if (other.gameObject.name == "Sphere") { sphereRb = other.gameObject.GetComponent<Rigidbody>(); Invoke("SphereDrop", 2.0f); } } void SphereDrop() { sphereRb.useGravity = true; } } |
ゲームプレイしましょう。
Cubeを十字キーで操作し、Sphereにぶつけます。
触れてから2秒後に、SphereオブジェクトのUseGravityがオンになり、落下します。
関連記事:
触れたオブジェクト(複数)をn秒後に全削除
触れた相手をn秒後に削除する
乗ったオブジェクトをn秒後に消す
触れた相手のオブジェクト名を取得
触れた相手のコライダーを削除(無効にする)