触发碰撞体上的 2D 玩家伤害



所以我正在制作一个自上而下的小型太空射击游戏,到目前为止一切都很好。我的问题是,当我更换武器时,我希望次要武器比主要武器造成更多的伤害(可使用数字键更改)。这是一个真正的挠头问题,任何帮助将不胜感激。这就是我尝试过的;

将武器添加到单个图层。 在OnTriggerEnter2D函数中,我做了一个if语句,说明如果游戏对象(子弹)是从第13层发射的,带走x量的HP。 下面是我目前对敌人的代码。

using UnityEngine;
using System.Collections;
public class enemyDamage : MonoBehaviour {

    public int health = 2;

    void OnTriggerEnter2D(){
        health--;
    }
    void Start () {
    }

    void Update () {
        if (health <= 0){
            Die();
        }
    }
    void Die(){
        Destroy (gameObject);
    }
}
您可以通过

OnTriggerEnter2D函数添加Collider2D参数来更改该函数。这样,您就可以访问触发函数的游戏对象。

您没有发布实例化项目符号的代码。但是,如果将项目符号名称设置为不同的值,则可以基于此降低运行状况。

void OnTriggerEnter2D(Collider2D other) {
    if(other.gameObject.name == "missile"){
        health -= 10;
    }else if(other.gameObject.name == "bullet"){
        health -= 1;
    }
}

或者更好的主意可能是在子弹中添加一个脚本,该脚本知道子弹将造成的伤害量。

void OnTriggerEnter2D(Collider2D other) {
    health -= other.gameObject.GetComponent<BulletScript>().damage;
}

最新更新