【问题标题】:get variable from object collided with从碰撞的对象中获取变量
【发布时间】:2018-06-17 17:30:26
【问题描述】:

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

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# unity3d collision


    【解决方案1】:

    假设子弹类被称为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

    【讨论】:

    • 谢谢,这可以解决问题,因为问题的碰撞部分让我自己把事情复杂化了。更进一步,可以说我不知道​​是什么击中了我的对象,所以不是 有没有办法说 ?
    • 不,不是。恐怕你需要知道你在寻找什么脚本。
    猜你喜欢
    • 2014-01-06
    • 1970-01-01
    • 1970-01-01
    • 2014-07-17
    • 1970-01-01
    • 2013-08-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多