You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Unity中如何在游戏启动时随机禁用两个立方体之一的Box Collider

随机禁用立方体Box Collider的实现方案

你的思路方向是对的,直接用随机值来决定禁用目标就行,这里给你两种简洁的实现方式,都是在游戏启动时执行一次:

方法一:随机选索引指定禁用对象

这种方式逻辑更直观,直接随机选0或1来对应两个立方体:

using UnityEngine;

public class RandomDisableCollider : MonoBehaviour
{
    // 在Inspector面板拖入对应的立方体对象
    public GameObject cubeA;
    public GameObject cubeB;

    void Start()
    {
        // 先确保两个Collider都是启用状态(可选,避免之前状态影响)
        cubeA.GetComponent<BoxCollider>().enabled = true;
        cubeB.GetComponent<BoxCollider>().enabled = true;

        // 随机生成0或1,0代表禁用A,1代表禁用B
        int randomIndex = Random.Range(0, 2);
        if (randomIndex == 0)
        {
            cubeA.GetComponent<BoxCollider>().enabled = false;
        }
        else
        {
            cubeB.GetComponent<BoxCollider>().enabled = false;
        }
    }
}

方法二:用布尔值切换状态

和你最初的思路匹配,通过随机布尔值来控制:

using UnityEngine;

public class RandomDisableCollider : MonoBehaviour
{
    public GameObject cubeA;
    public GameObject cubeB;

    void Start()
    {
        cubeA.GetComponent<BoxCollider>().enabled = true;
        cubeB.GetComponent<BoxCollider>().enabled = true;

        // 随机生成布尔值,true则禁用A,false则禁用B
        bool disableCubeA = Random.value > 0.5f;
        cubeA.GetComponent<BoxCollider>().enabled = !disableCubeA;
        cubeB.GetComponent<BoxCollider>().enabled = disableCubeA;
    }
}

注意事项

  • 把这个脚本挂到任意一个场景中的对象上(比如空对象),然后在Inspector面板拖入cubeA和cubeB的引用
  • Random.Range(0,2)在Unity中对于整数范围是左闭右开,所以只会返回0或1
  • 先启用两个Collider的步骤是为了避免场景中对象的初始状态影响最终结果,确保每次启动都只禁用一个

内容的提问来源于stack exchange,提问作者MrAntor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 12:01:44