【问题标题】:Unity5 OnTriggerEnter2D not called after collision (2D game)碰撞后未调用 Unity5 OnTriggerEnter2D(2D 游戏)
【发布时间】:2017-04-29 16:58:05
【问题描述】:

我是 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 属性:

如果有人可以向我指出,我确定我遗漏了一些简单的东西。

【问题讨论】:

  • 使用 boxcollider2D
  • @CristianoSoleti 把它作为答案。

标签: c# unity3d 2d collision-detection unity5


【解决方案1】:

如果您要使用OnTriggerEnter2D,您还必须使用 2D Collider。您当前正在使用BoxCollider,如第二个屏幕截图所示。

将其更改为BoxCollider2D 并且应该调用您的碰撞回调函数。

【讨论】:

  • 谢谢!这解决了它并且很有意义。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-06
    • 2015-05-20
    • 1970-01-01
    相关资源
    最近更新 更多