我是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属性:
和
我敢肯定,如果有人可以向我指出,我会漏掉一些简单的东西。
最佳答案
如果要使用OnTriggerEnter2D
,则还必须使用2D Collider。如第二个屏幕截图所示,您当前正在使用BoxCollider
。
将其更改为BoxCollider2D
并应调用Collision回调函数。
关于c# - 碰撞后未调用Unity OnTriggerEnter2D(2D游戏),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43698271/