带有2D gameObject的Unity JavaScript OnCollisionEnter

时间:2014-01-05 02:00:37

标签: function unity3d unityscript

当我的玩家通过内置的OnCollisionEnter功能与它接触时,我试图摧毁一个gameObject(在我的情况下是一个2d球)。我的脚本仅附加到播放器。玩家和球(电池)都有2d箱式对撞机和刚体。也许它们是2d碰撞而不是常规的事实与问题有关?啊!是的,我差点忘了提问题;它不起作用。它没有破坏,或打印“打”....哦,是的,我DID命名球“电池”。非常感谢我的帮助!

UnityScript代码:

function OnCollisionEnter(batt : Collision)
{
    if(batt.collider.name == "battery")
    {
        Destroy(batt.gameObject);
        Debug.Log("Hit");
    }

}

2 个答案:

答案 0 :(得分:1)

如果您使用的是Unity的2d工具集,而不是OnCollisionEnter,您使用OnCollisionEnter2D,并且在变量内部,而不是batt:Collision,您需要将其更改为batt:Collision2D,希望这有帮助:),还有,你说过你的两个物体都有2d箱式碰撞器和刚体,确保它是2d刚体,而不是3d刚体(默认)

答案 1 :(得分:0)

嗯,很难调试Unity中的冲突,甚至在不了解整个项目的情况下更难。但有一些事情:

1)确保您有想要接收事件的游戏对象附加的刚体

2)对于你的代码,我不太确定(因为我主要做C#),但基本上是:

OnCollisionEnter( Collision batt ){
    if ( batt.gameObject.name == "battery" ){
        //Do what you want it to do
    }
}

我认为基本上你可能没有使用正确的名字。如果这不起作用,请尝试在OnCollisionEnter上放置一个调试器断点,以查看它是否正在被调用。