当我的玩家通过内置的OnCollisionEnter功能与它接触时,我试图摧毁一个gameObject(在我的情况下是一个2d球)。我的脚本仅附加到播放器。玩家和球(电池)都有2d箱式对撞机和刚体。也许它们是2d碰撞而不是常规的事实与问题有关?啊!是的,我差点忘了提问题;它不起作用。它没有破坏,或打印“打”....哦,是的,我DID命名球“电池”。非常感谢我的帮助!
UnityScript代码:
function OnCollisionEnter(batt : Collision)
{
if(batt.collider.name == "battery")
{
Destroy(batt.gameObject);
Debug.Log("Hit");
}
}
答案 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上放置一个调试器断点,以查看它是否正在被调用。