【问题标题】:Unity Destroy(gameObject) kills parent object and collision trigger on multiple collidersUnity Destroy(gameObject) 在多个碰撞器上杀死父对象和碰撞触发器
【发布时间】:2014-03-13 17:40:00
【问题描述】:

我有一个脚本,当与敌人碰撞时箭头应该消失。我用

    function OnTriggerEnter2D(coll: Collider2D) {
        coll.gameObject.BroadcastMessage("ApplyDamage", 10);
        Destroy (gameObject);
}

第一个问题是,当游戏对象被销毁时,我得到一个错误并说The object of type 'Transform' has been destroyed but you are still trying to access it.似乎是因为父对象被销毁了。我还有另一个问题。当我在 2D 中将敌人堆叠在每个顶部时,它们会停在一个 cretain 位置,有时会有超过 1 个敌人共享同一个碰撞区域。一支箭会对同一地点的所有敌人造成伤害,而不是只对同一地点的一名敌人造成伤害。

    var health = 10;

    function ApplyDamage (damage : float) {

    health -= damage;

    if ( health <= 0) {
    Destroy(gameObject);
    }
}

【问题讨论】:

  • 这应该是 2 个问题,抛出错误的那行代码在哪里?

标签: unity3d unityscript


【解决方案1】:

第二个问题:

箭头对撞机将在它接触的所有对撞机中触发碰撞,这是适当的行为。如果您想让箭头只与一个敌人发生碰撞,那么您应该在箭头上创建一个脚本并使用它的OnTrigger/OnCollision 来禁用它的碰撞器。

【讨论】:

    【解决方案2】:

    似乎是因为父对象被销毁了。

    父对象是什么时候被销毁的?如果之前被销毁了

    Destroy (gameObject);
    

    那么你不需要销毁游戏对象,因为它会在父对象被销毁时自动销毁。

    【讨论】:

      猜你喜欢
      • 2015-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-18
      • 2022-08-20
      • 1970-01-01
      • 1970-01-01
      • 2016-09-29
      相关资源
      最近更新 更多