Unity collider OnTriggerEnter 没有被调用
Unity collider OnTriggerEnter not getting called
我之前做了很多colliders,我用的是(collider otherOnTriggerEnter(collider other)
)然后通过比较检查另一个collider是不是我想要的标签。但这次我没有触发 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");
它被触发了。
我想不通哪里出了问题。请帮助我。
首先仔细检查你的敌人游戏对象是否有标签 "Enemy"。接下来确保您的玩家碰撞器在 Unity 检查器中选择了 "Is Trigger" 选项。
接下来尝试使用
col.gameObject.CompareTag("Enemy")
而不是:col.tag == "Enemy"
在你的 if 语句中。
查看关于 Colliders 的 Unity 文档:
Unity Collider documentation
Unity Component.CompareTag method with example
希望对您有所帮助!
我能给你的第一个建议是,在编写代码时 Debug
始终确保代码中的每一步都被执行。在每个 if 内部,如果只是调试它应该检查的内容,如果它是真的,在你的 void 内部,确保它的 运行 是 void,等等......
下一个:
- 检查你的对象是否被标记为 "Enemy",这可能是最常见的错误之一,它很容易解决,你可能写错了,或者只是没有设置它。
-这里是触发器文档documentation。
-在此之后,确保您的 gameobject
是 triggered
.
的市场
-如果你想你也可以使用colliders,这也告诉你如何检查标签。
确保你设置了所有这些,如果这对你没有帮助,请在下面评论,打印,你的游戏对象,代码等与此相关。
我之前做了很多colliders,我用的是(collider otherOnTriggerEnter(collider other)
)然后通过比较检查另一个collider是不是我想要的标签。但这次我没有触发 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");
它被触发了。
我想不通哪里出了问题。请帮助我。
首先仔细检查你的敌人游戏对象是否有标签 "Enemy"。接下来确保您的玩家碰撞器在 Unity 检查器中选择了 "Is Trigger" 选项。
接下来尝试使用
col.gameObject.CompareTag("Enemy")
而不是:col.tag == "Enemy"
在你的 if 语句中。
查看关于 Colliders 的 Unity 文档: Unity Collider documentation Unity Component.CompareTag method with example
希望对您有所帮助!
我能给你的第一个建议是,在编写代码时 Debug
始终确保代码中的每一步都被执行。在每个 if 内部,如果只是调试它应该检查的内容,如果它是真的,在你的 void 内部,确保它的 运行 是 void,等等......
下一个:
- 检查你的对象是否被标记为 "Enemy",这可能是最常见的错误之一,它很容易解决,你可能写错了,或者只是没有设置它。
-这里是触发器文档documentation。
-在此之后,确保您的 gameobject
是 triggered
.
-如果你想你也可以使用colliders,这也告诉你如何检查标签。
确保你设置了所有这些,如果这对你没有帮助,请在下面评论,打印,你的游戏对象,代码等与此相关。