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

Unity中OnTriggerEnter检测指定外部对象碰撞的代码实现问题求助

正确实现Unity中球与两个触发器的碰撞检测

首先,你的代码里有几个明显的问题导致它无法运行:

  1. 拼写错误:colission应该是collision,而且LeftHitTrigger.collision这种写法本身就不对——GameObject类并没有名为collision的属性,你没法这么直接访问。
  2. 语法错误:条件判断里用逗号分隔两个条件是C#不允许的,需要用逻辑与运算符&&来连接。
  3. 逻辑偏差:你需要明确判断的是「碰撞发生时,进入触发器的对象是球」,同时「当前触发碰撞的是LeftHitTrigger还是RightHitTrigger」(或者反过来,取决于你的脚本挂载位置)。

下面给出两种常见的正确实现方式,你可以根据自己的需求选择:

方式一:脚本挂载在球上

如果你的脚本是挂在球对象上,那么OnTriggerEnter的参数collision就是触发碰撞的那个触发器对象(LeftHitTrigger或RightHitTrigger),代码可以这么写:

public GameObject LeftHitTrigger;
public GameObject RightHitTrigger;
public int AiCount = 0;
public int AvatarCount = 0;
public Text AiCountText;
public Text AvatarCountText;

private void OnTriggerEnter(Collider collision)
{
    // 检查碰撞的对象是否是LeftHitTrigger
    if (collision.gameObject == LeftHitTrigger)
    {
        AiCount++;
        Debug.Log($"AI击中次数:{AiCount}");
        AiCountText.text = AiCount.ToString();
    }
    // 检查碰撞的对象是否是RightHitTrigger
    else if (collision.gameObject == RightHitTrigger)
    {
        AvatarCount++;
        Debug.Log($"玩家击中次数:{AvatarCount}");
        AvatarCountText.text = AvatarCount.ToString();
    }
}

方式二:脚本分别挂载在两个触发器上

如果不想在球上挂载脚本,也可以把脚本分别挂在LeftHitTrigger和RightHitTrigger上,这样不需要预设变量,直接检测进入触发器的是球即可:

public int HitCount = 0;
public Text CountText;
// 在Inspector面板中给LeftHitTrigger勾选这个,RightHitTrigger不勾选
public bool IsAiTrigger;

private void OnTriggerEnter(Collider collision)
{
    // 先判断进入的是球
    if (collision.CompareTag("Ball"))
    {
        if (IsAiTrigger)
        {
            HitCount++;
            Debug.Log($"AI击中次数:{HitCount}");
        }
        else
        {
            HitCount++;
            Debug.Log($"玩家击中次数:{HitCount}");
        }
        CountText.text = HitCount.ToString();
    }
}

额外注意事项:

  • 确保你的球和两个触发器对象都勾选了Is Trigger(在Collider组件里)。
  • 球对象需要有Rigidbody组件(即使是静态碰撞,也需要勾选Is Kinematic),否则触发事件不会生效。
  • 标签"Ball"要确保已经在Unity编辑器中创建,并且正确赋值给球对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 00:03:10