【发布时间】: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