Unity 2D中的碰撞检测无法正常工作

12

我有两个2D游戏对象,它们各自具有一个Box Collider 2D和一个非静态的Rigid Body 2D。当游戏运行时,其中一个会向另一个移动并与其碰撞。

然而,我在移动的游戏对象中还有以下方法:

void OnCollisionEnter(Collision collision) 
{
    print( "Collided with someone" );
}

打印语句从未打印,因此可能从未调用该方法。我错在哪里了?


你能确认你的类继承自MonoBehaviour吗?请在文档中将脚本参考更改为C#。关于游戏开发的问题最好在这里提问:gamedev - Measurity
4
我还没有检查过,但是有一个OnCollisionEnter2D函数需要使用。当我将一个2D游戏转换为Unity的2D框架时,这个函数曾经让我犯了错误。请参考此链接:http://docs.unity3d.com/Documentation/ScriptReference/Collider2D.OnCollisionEnter2D.html - T. Kiley
啊!就是这样,谢谢 T. Kiley =) - Jean Finley
不想成为那个人,但你能接受一下吗?谢谢 :) - T. Kiley
1个回答

27

Unity已经复制了所有的2D物理方法,并在结尾加上了“2D”这个词!所以对于你的例子,它应该被改为:

void OnCollisionEnter2D(Collision2D collision)

对于基本的二维物理学中的任何其他事物也是如此。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接