📖 3rdschoolコンテンツ

コンテンツリスト

Unity_ボールアクション_落下する床

ボールが触れると落下する床の仕掛けをつくろう!

落下する床の作成
image block

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; // 物理的に動かせる状態にする(落下開始)
    }
}
  1. 落下する床のゲームオブジェクトを作成 :
    • Unityのエディタ上で、3Dオブジェクト(たとえばキューブ)を作成して床として配置します。
    • 必要に応じて床の大きさや位置を調整します。
  2. 落下する床にスクリプト FallingFloor をアタッチします。
    • 落下する床のゲームオブジェクトを選択します。
    • FallingFloor スクリプトを床のゲームオブジェクトにアタッチします。
    • インスペクタウィンドウで、 Delay Before Fall を触れた後、何秒後に落下するかの時間を設定します。
  3. Rigidbodyの設定 :
    • 落下する床のゲームオブジェクトにRigidbodyコンポーネントを追加します。