首页 > 解决方案 > Unity collider OnTriggerEnter 没有被调用

问题描述

我之前制作了许多对撞机,我使用的是 (collider other OnTriggerEnter(collider other)),然后通过比较TAG检查另一个对撞机是否是我想要的。但是这次我没有触发 canMelee 布尔值。我的代码:

ArrayList Enemy;
public StatData stat;

[SerializeField]
private bool canMelee = false;

/// <summary>
/// OnTriggerEnter is called when the Collider other enters the trigger.
/// </summary>
/// <param name="other">The other Collider involved in this collision.</param>
void OnTriggerEnter(Collider col)
{
    if (col.tag == "Enemy")
    {
        Debug.Log("Now you can do melee attack!");
        canMelee = true;
    }
}

所以我写了这段代码,但不知何故这不起作用我检查了标签并将其添加到玩家游戏对象中,但它仍然不起作用。

我尝试添加另一个调试以检查 OnTriggerEnter() 是否发生在 if 分支上方:Debug.Log("Triggered");并且它被触发。

我无法弄清楚出了什么问题。请帮我。

标签: c#unity3dgame-development

解决方案


首先仔细检查你的敌人游戏对象是否有标签“敌人”。接下来确保您的玩家对撞机在 Unity 检查器中选择了“Is Trigger”选项。

接下来尝试 在 if 语句中使用col.gameObject.CompareTag("Enemy") 而不是: 。col.tag == "Enemy"

在 Colliders 上查看 Unity 文档: Unity Collider 文档 Unity Component.CompareTag method with example

希望这可以帮助!


推荐阅读