我有一个脚本,当与敌人发生碰撞时箭头应该消失。我用
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中将敌人堆叠在每个敌人的顶部时,他们会停在一个战斗位置,有时会有超过1个敌人共享相同的碰撞区域。一个箭头会对同一地点的所有敌人造成伤害,而不是同一地点的一个敌人。
var health = 10;
function ApplyDamage (damage : float) {
health -= damage;
if ( health <= 0) {
Destroy(gameObject);
}
}
答案 0 :(得分:0)
关于你的第二个问题:
箭头碰撞器将触发碰撞的所有碰撞器中的碰撞,这是合适的行为。如果你想让箭头只与一个敌人发生碰撞,你应该在箭头上创建一个脚本并使用它的OnTrigger
/ OnCollision
来禁用它的对手。
答案 1 :(得分:0)
似乎是因为父对象被破坏了。
父对象何时被销毁?如果它在
之前被销毁了Destroy (gameObject);
然后你不需要销毁游戏对象,因为它会在父母被摧毁时自动被销毁。