Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unity3d 如何使对象只碰撞一次?_Unity3d_Collision Detection - Fatal编程技术网

Unity3d 如何使对象只碰撞一次?

Unity3d 如何使对象只碰撞一次?,unity3d,collision-detection,Unity3d,Collision Detection,我有看起来像正方形的物体。(有碰撞器和刚体) 我想让这些方块在我用物体撞击这些方块时发出声音。但只有一次(场景一次)。如果我再次击中其中一个方块,ıt不应该发出声音。我怎么能这样做 提前谢谢 调用onCollisionCenter()方法时,可以检查bool变量是否设置为true hasCollided = false; void OnCollisionEnter(Collision collision){ if (!hasCollided){ // Play soun

我有看起来像正方形的物体。(有碰撞器和刚体)

我想让这些方块在我用物体撞击这些方块时发出声音。但只有一次(场景一次)。如果我再次击中其中一个方块,ıt不应该发出声音。我怎么能这样做


提前谢谢

调用
onCollisionCenter()
方法时,可以检查bool变量是否设置为true

hasCollided = false;

void OnCollisionEnter(Collision collision){
    if (!hasCollided){
        // Play sound
        hasCollided = true;
    }        
}

添加一个简单的标志。。禁用其碰撞器组件。。销毁其碰撞器组件和/或正在侦听碰撞的脚本。。。等等,汉克斯。但最好的解决方案是什么?我应该像D.Dorion那样添加布尔值,还是销毁它的碰撞器组件@Derhugoi如果你销毁了Collider组件,游戏对象将不会与其他collidersThis发生碰撞,但是不要使用bool变量,只需销毁Collider即可。这也将节省资源。