从与

时间:2018-06-17 17:30:26

标签: c# unity3d collision

我正在努力减少被子弹击中的敌人的健康状况。 子弹具有不同的伤害值,并且存储在“子弹”脚本中,而敌人的生命值存储在“敌人”脚本中。 所以我基本上试图从目前击中敌人的子弹上的“子弹”脚本中获取伤害值。

void OnTriggerEnter2D(Collider2D collision) {
    if (collision.tag == "bullet") {
        healthCur -= 50f; // trying to reduce health by bullet damage instead of fixed 50hp

        if (healthCur <= 0) {
            Die();
        }
    }
}

我在这个问题上看到了类似的问题,但是还没有找到一个有效的解决方案,所以如果这是一个重复的话,那么除了重复的链接之外还可以获得更多的信息。

感谢。

1 个答案:

答案 0 :(得分:2)

假设子弹类名为Bullet并且它有一个字段Damage

void OnTriggerEnter2D(Collider2D collision) {
    if (collision.tag == "bullet") {
        healthCur -= collision.gameObject.GetComponent<Bullet>().Damage;

        if (healthCur <= 0) {
            Die();
        }
    }
}

https://docs.unity3d.com/ScriptReference/GameObject.GetComponent.html