我有两个2D游戏对象,它们各自具有一个Box Collider 2D和一个非静态的Rigid Body 2D。当游戏运行时,其中一个会向另一个移动并与其碰撞。
然而,我在移动的游戏对象中还有以下方法:
void OnCollisionEnter(Collision collision)
{
print( "Collided with someone" );
}
打印语句从未打印,因此可能从未调用该方法。我错在哪里了?
我有两个2D游戏对象,它们各自具有一个Box Collider 2D和一个非静态的Rigid Body 2D。当游戏运行时,其中一个会向另一个移动并与其碰撞。
然而,我在移动的游戏对象中还有以下方法:
void OnCollisionEnter(Collision collision)
{
print( "Collided with someone" );
}
打印语句从未打印,因此可能从未调用该方法。我错在哪里了?
Unity已经复制了所有的2D物理方法,并在结尾加上了“2D”这个词!所以对于你的例子,它应该被改为:
void OnCollisionEnter2D(Collision2D collision)
对于基本的二维物理学中的任何其他事物也是如此。
OnCollisionEnter2D
函数需要使用。当我将一个2D游戏转换为Unity的2D框架时,这个函数曾经让我犯了错误。请参考此链接:http://docs.unity3d.com/Documentation/ScriptReference/Collider2D.OnCollisionEnter2D.html - T. Kiley