触发器对撞机上的2D玩家伤害

时间:2015-01-17 06:47:43

标签: unity3d

所以我做了一个顶级太空射击游戏,到目前为止一切都很好。我的问题是,当我更换武器时,我希望辅助设备比主设备造成更大的伤害(可以使用数字键更改)。它是一个真正的头脑刮板,任何帮助将不胜感激。这就是我的尝试;

将武器添加到各个图层。在OnTriggerEnter2D函数中,我创建一个if语句,说明gameObject(项目符号)是否从第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);
    }
}

1 个答案:

答案 0 :(得分:1)

您可以通过向其添加OnTriggerEnter2D参数来更改Collider2D功能。这样您就可以访问触发该功能的gameObject。

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

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