Unity5中,2D游戏中发生碰撞后OnTriggerEnter2D方法未被调用

3
我是Unity3D 5的新手,我的第一个2D游戏涉及到碰撞检测遇到了问题。我的移动物体是一个球形,有Rigidbody2D和CircleCollider2D组件。我的静止的“碰撞器或触发器”是一个BoxCollider,并且附带了一个脚本。当球通过静态框时,OnTriggerEnter2D应该被触发。我也尝试过OnCollisionEnter2D,但我相当确定应该使用OnTriggerEnter2D,因为我的静态框被标记为触发器。
代码如下:
public class LoseCollider : MonoBehaviour {

public LevelManager levelManager;

void OnCollisionEnter2D(Collision2D collision)
{
    print("collide");
    levelManager.LoadLevel("Lose");
}

void OnTriggerEnter2D(Collider2D trigger)
{
    print("trigger");
    levelManager.LoadLevel("Lose");
}

void OnCollisionEnter(Collision collision)
{
    print("collide");
    levelManager.LoadLevel("Lose");
}

void OnTriggerEnter(Collider trigger)
{
    print("trigger");
    levelManager.LoadLevel("Lose");
}
}

你可以看到我在测试各种变体,但是没有任何变体被调用。这是我的对象 Unity 属性:

Ball

以及

enter image description here

如果有人能指出我可能遗漏的简单问题,那就太好了。


1
使用BoxCollider2D。 - Cristiano Soleti
@CristianoSoleti 把它作为答案。 - Programmer
2个回答

5

如果您要使用OnTriggerEnter2D,您还必须使用2D碰撞器。如您第二张截图所示,您目前正在使用BoxCollider

将其更改为BoxCollider2D,您的碰撞回调函数应该会被调用。


谢谢!这解决了问题,而且很有道理。 - BrianLegg

0

我知道你已经解决了这个问题,但我也遇到了相同的问题,并找到了你的帖子。我使用了正确的2D碰撞器,但是我缺少了Ridgedbody 2D组件。我花了一段时间才找到它,所以我想在这里添加一些信息,以防其他人遇到相同的问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接