碰撞后未调用 Unity5 OnTriggerEnter2D(2D 游戏)
Posted
技术标签:
【中文标题】碰撞后未调用 Unity5 OnTriggerEnter2D(2D 游戏)【英文标题】:Unity5 OnTriggerEnter2D not called after collision (2D game) 【发布时间】: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 把它作为答案。 【参考方案1】:如果您要使用OnTriggerEnter2D
,您还必须使用 2D Collider。您当前正在使用BoxCollider
,如第二个屏幕截图所示。
将其更改为BoxCollider2D
并且应该调用您的碰撞回调函数。
【讨论】:
谢谢!这解决了它并且很有意义。【参考方案2】:我知道你已经解决了,但我遇到了同样的问题并找到了你的帖子。我使用了正确的 2D 对撞机,但我缺少 Ridgedbody 2D 组件。我花了一段时间才找到它,所以我想在这里添加它,以防其他人遇到同样的问题。
【讨论】:
以上是关于碰撞后未调用 Unity5 OnTriggerEnter2D(2D 游戏)的主要内容,如果未能解决你的问题,请参考以下文章
goBack 导航调用后未调用 componentDidMount
完成 AsyncTask 后未调用 onPostExecute
在 reloadData 后未调用 cellForRowAtIndexPath