首页 > 解决方案 > 从碰撞的对象中获取变量

问题描述

我正在尝试减少被子弹击中的敌人的生命值。子弹有不同的伤害值,它们存储在“子弹”脚本中,而敌人的生命值存储在“敌人”脚本中。所以我基本上是想从当前击中敌人的子弹上的“子弹”脚本中获取伤害值。

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

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

谢谢。

标签: c#unity3dcollision

解决方案


假设子弹类被调用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


推荐阅读