【问题标题】:2D Collision Detection methods not getting called未调用 2D 碰撞检测方法
【发布时间】:2015-02-06 08:01:10
【问题描述】:

我知道以前有人问过这个问题,但我在任何地方都找不到答案,所以请不要将其标记为重复。

我正在尝试在 Unity 中制作一个 2D 游戏,我需要在其中检测子弹击中敌人的情况。

我在敌人预制件和子弹预制件上都有一个 Box Collider 2D 和一个 Rigidbody 2D。

首先,我尝试在未选中“Is Trigger”框的情况下进行操作。

这是我使用的代码:

function OnCollisionEnter2D(coll: Collision2D)
{
    Debug.Log("Detected !");
}

没有成功。

接下来,我尝试勾选“已触发”框,并使用以下代码:

function OnTriggerEnter2D(other: Collider2D)
{
    Debug.Log("Detected !");
}

再一次,没有成功……

我在两个对象上的组件都是“Box Collider 2D”。

我尝试的两种方法都没有返回任何错误消息,只是没有调用函数。

如果有人知道发生了什么,请尽快告诉我 - 在此之前我无法继续开发我的游戏:/

这是 Unity 的错误吗?我应该举报吗?

此外,这是检查器对其中一个对象的屏幕截图:

向任何可以回答我所有问题的人干杯!抱歉,如果我的帖子格式不正确,我是论坛的新手...

Fjpackard.

【问题讨论】:

  • 我认为您已将 3d 物理组件附加到您的游戏对象!检查它们是否是二维的!并更新问题。
  • 谢谢,但事实并非如此:/ 组件是“Box Collider 2D”。将更新问题。
  • 检查您没有尝试检测 2D 碰撞器(在添加组件的 Physics 2D 选项卡下找到的碰撞器)和 3D 碰撞器(在添加组件的Physics 选项卡下找到的碰撞器)之间的碰撞。它们根本没有相互碰撞。
  • 我刚刚更新了问题,它们都是“Box Collider 2D”。
  • @Fjpackard 查看此页面上的碰撞动作矩阵:docs.unity3d.com/Manual/CollidersOverview.html - 由于您的子弹移动,您的子弹将需要 Rigidbody2D 组件。

标签: unity3d collision-detection unityscript unity3d-2dtools


【解决方案1】:

您必须为敌人和子弹预制件添加Rigidbody2D(停用重力)。

在两个预制件中进行此修改后,它必须工作。

【讨论】:

  • 感谢您的回答 - 我是在对象和 Box Collider 2D 中都添加 Rigidbody2D,还是先删除 Box Collider 2D?
  • 两者。您必须添加 Box Collider 2D 和 Rigidbody2D。测试一下,有任何疑问可以问我。
  • 你关闭isKinematic了吗?
  • 默认关闭。
  • 您使用的是OnCollisionEnter2D 还是OnTriggerEnter2D
【解决方案2】:

好的,所以我想通了……

我实际上使用的是旧版本的 Unity——就这么简单!

感谢所有帮助过的人。

干杯, Fjpackard。

【讨论】:

  • 认为是 Unity 4.5.5f1。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-24
  • 1970-01-01
相关资源
最近更新 更多