【发布时间】:2017-09-16 06:29:20
【问题描述】:
如果子弹击中敌人,而该敌人是敌人身上脚本的一部分,我会检测到:
void OnTriggerEnter (Collider other)
{
if (other.tag == "Bullet") {
Destroy (other); // or Destroy (other, 0);
}
}
问题是当子弹击中敌人时,它的生命值会下降到零(从 100),就好像它被多次击中(我还检查了 Debug.log)。
那么有没有办法让子弹更快地摧毁,这样它就不会再次触发?
另外,这个检测脚本应该在敌人身上还是在子弹上?
【问题讨论】:
-
使用 Destroy(other.gameObject) 代替 Destroy(other)。 other 只是一个对撞机引用,而不是实际的游戏对象本身。
-
发布
TakeDamage函数。此外,使用Debug.Log检查调用OnTriggerEnter的次数。 @deepankar您应该将其发布为答案,因为这可能是问题 -
@Programmer
TakeDamage真的没什么意思,即使我删除了那个调用也会发生同样的情况。我添加了 debug.log,它输入了两次,即使是Destroy(other.gameObject)。 -
我知道这已经解决了,但是
TakeDamage函数在这里很重要,因为您抱怨分数从 100 降到零。我不知道你为什么要删除它。通过向我们展示我们可以使用排除过程(包括Debug.Log)的功能来找到您的问题。 -
这是噪音,问题是它输入了两次
OnTriggerEnter。 @程序员
标签: unity3d collision-detection collider