我正在制作一款主要是 3D 游戏,但也有一些 2D 迷你游戏。然而,在其中一个迷你游戏中,玩家的 OnCollisionEnter2D() 没有检测到任何其他对象的碰撞。我的代码如下:
public void OnCollisionEnter2D(Collision2D collision)
{
Debug.Log("CollisionOccurred");
if (collision.gameObject.tag == "PuzzleWall")
{
Debug.Log("Wall hit");
}
}
不幸的是,尽管多次通过多个对象,但 Debug.Log() 都没有触发。
我已尝试以下方法来解决该问题(但无济于事):
如果您的 Collider2D 组件启用了 IsTrigger,那么您需要使用函数
OnTriggerEnter2D()
而不是 OnCollisionEnter2D()
。这是因为当您启用 IsTrigger 时,碰撞器的行为并不像实际的碰撞器,而是一个触发器。