首页 > 解决方案 > 玩家在与敌人碰撞时死亡,同时增加分数 Unity

问题描述

我被困在了。当激光击中敌人时,我试图给玩家分数。有两个主要的 if 条件。一种是当敌人与玩家发生碰撞时,敌人将被摧毁,并对玩家造成1点伤害。而在第二种情况下,如果敌人击中激光,它会将分数加到玩家身上。

“我已经在全局上创建了这个播放器变量并在启动时初始化”

public class Enemy : MonoBehaviour{

public float speedofenemy = 1.0f;
private Player player;

// Start is called before the first frame update
void Start()
{
    player = GameObject.Find("Player").GetComponent<Player>();
}

添加分数后消灭敌人和激光。但是当我的玩家与第一次被摧毁的敌人发生碰撞时会发生什么。我不明白为什么?请帮忙。

  void OnTriggerEnter2D(Collider2D other)
{

    if (other.tag == "Player")
    {

        Destroy(this.gameObject);

        Player player = other.transform.GetComponent<Player>();
        if (player != null)
            player.Damage();
    }

    if (other.tag == "Laser")

        if (player != null) {
            player.addScore(10);
        }

        Destroy(other.gameObject);
    Destroy(this.gameObject);

}

标签: c#unity3d2dcollision-detection

解决方案


你正在摧毁你的播放器,你需要像这样改变你的代码:

void OnTriggerEnter2D(Collider2D other)
{

    if (other.tag == "Player")
    {

        Destroy(this.gameObject);

        Player player = other.transform.GetComponent<Player>();
        if (player != null)
            player.Damage();
    }

    if (other.tag == "Laser")
    {
        if (player != null) {
            player.addScore(10);
        }
    
        Destroy(other.gameObject);
     }
    
    Destroy(this.gameObject);

}

推荐阅读