很抱歉,我在工作,但无法访问我的代码,但基本上。如果我把它设置为摧毁"其他"因为在更新结束之前没有任何东西被销毁,所以两个对象都被标记为销毁。我现在不关心哪一个幸存,只是想了解如何做到这一点的想法。在将来,我可能会创建一个新的实例,其中2击中但是两次都将触发创建新实例,并且2个新实例将发生碰撞等。
答案 0 :(得分:2)
嗯,你可以制作一个标志,告诉你你是否被摧毁了。如果是这样,你就无法摧毁其他任何人。然后,无论哪个“碰撞”#39;方法首先被调用将是幸存者。它会是这样的:
private bool alreadyDead = false;
void OnCollisionEnter(Collision collision) {
if (!alreadyDead) {
MyScript script = collision.gameobject.GetComponent<MyScript>();
if (script != null) {
script.alreadyDead = true;
collision.gameobject.Destroy();
}
}
}
答案 1 :(得分:1)
您需要设置某种标记以进行检查。你可以在脚本上设置一个布尔值,甚至可以切换你想要销毁的GameObject的活动状态,反过来也不会让禁用的GameObject通过它的碰撞/破坏方法。
void OnCollisionEnter (Collision collision) {
// Only proceed if this gameObject is active
if (gameObject.activeSelf) {
// Disable the other gameObject we've collided with, then flag to destroy it
collision.gameObject.SetActive(false);
Destroy(collision.gameObject);
}
}