ボールが触れると落下する床の仕掛けをつくろう!
落下する床の作成
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class FallingFloor : MonoBehaviour
{
public float delayBeforeFall = 2.0f; // プレイヤーが触れてからの落下までの遅延(秒)
private Rigidbody rb;
private void Start()
{
// Rigidbodyを取得し、最初はisKinematicをtrueにしておく(物理的に動かない状態)
rb = GetComponent<Rigidbody>();
rb.isKinematic = true;
}
private void OnCollisionEnter(Collision collision)
{
if (collision.gameObject.CompareTag("Player"))
{
// プレイヤーが接触したら、指定した遅延後に床を落下させる
StartCoroutine(StartFalling());
}
}
IEnumerator StartFalling()
{
yield return new WaitForSeconds(delayBeforeFall);
rb.isKinematic = false; // 物理的に動かせる状態にする(落下開始)
}
}
-
落下する床のゲームオブジェクトを作成
:
- Unityのエディタ上で、3Dオブジェクト(たとえばキューブ)を作成して床として配置します。
- 必要に応じて床の大きさや位置を調整します。
-
落下する床にスクリプト
FallingFloor
をアタッチします。- 落下する床のゲームオブジェクトを選択します。
-
FallingFloor
スクリプトを床のゲームオブジェクトにアタッチします。 -
インスペクタウィンドウで、
Delay Before Fall
を触れた後、何秒後に落下するかの時間を設定します。
-
Rigidbodyの設定
:
- 落下する床のゲームオブジェクトにRigidbodyコンポーネントを追加します。