unity-game-engine - 当同一对象的 2 个实例发生碰撞时,如何仅销毁 1 个对象?

标签 unity-game-engine

抱歉,我正在工作,无法访问我的代码,但基本上是这样。如果我将其设置为销毁“其他”,因为在更新结束之前没有任何内容被销毁,两个对象都会被标记为销毁。我不在乎现在哪一个幸存下来,只是想了解如何做到这一点的想法。将来我可能会创建一个新实例,其中 2 个实例会命中,但两者都会触发新实例的创建,并且 2 个新实例会发生碰撞等。

最佳答案

好吧,你可以制作一面旗帜来告诉你是否已被摧毁。如果是这样,你就无法摧毁任何人。然后,最先调用的“碰撞”方法将成为幸存者。它会是这样的:

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();
        }
    }
}

关于unity-game-engine - 当同一对象的 2 个实例发生碰撞时,如何仅销毁 1 个对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27929273/

相关文章:

c# - Unity System.Drawing内部缓冲区溢出异常

iphone - iphone 可以多快的 fps 截取屏幕截图?

android - 每当我尝试在 Android 设备上上传文件时出现 "No content provider"错误

c# - 简单登录unity c#脚本

c# - 密码类型 InputField 的文本仅获得星号

c# - 为什么即使未选中禁用编辑器中的脚本,它仍然可以工作并使对象可交互?

xcode - 可接受的内存泄漏量

c# - 在变换 y 轴上切换翻转

c# - 字符串长度不等于字符串数据 Unity C#

c# - 无法在我的网站上注册用户(PHP、Unity3D)