玩家在与得分相遇时与敌人碰撞而死

时间:2020-07-19 20:03:42

标签: c# unity3d 2d collision-detection

我被困在。当激光击中敌人时,我试图给玩家打分。如果有两个主要条件。一种是当敌人与玩家碰撞时,敌人将被消灭,并对玩家造成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);

}

1 个答案:

答案 0 :(得分:0)

您要摧毁播放器,需要像这样更改代码:

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

}