【问题标题】:Player is dying while colliding with enemy while adding score Unity玩家在与敌人碰撞时死亡,同时增加分数 Unity
【发布时间】:2020-07-19 20:03:42
【问题描述】:

我被困在了。当激光击中敌人时,我试图给玩家分数。有两个主要的 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# unity3d 2d collision-detection


    【解决方案1】:

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

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

    【讨论】:

    • 对我有用的代码是: if (other.tag == "Laser") { if (player != null) { player.addScore(10); } 销毁(other.gameObject);销毁(this.gameObject); }
    猜你喜欢
    • 2023-03-21
    • 2021-03-24
    • 2021-05-10
    • 2016-06-24
    • 1970-01-01
    • 2016-01-31
    • 2013-04-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多