为什么每一次碰撞,而不仅仅是标记的Enemy,都会激活这个if语句?C#在Unity中的应用

问题描述 投票:0回答:1

我正在做一款太空射击游戏,我希望当玩家击中敌人时,伤害功能能够被调用。但是由于某些原因,每一次碰撞,包括激光和电源,都会调用伤害功能。有人知道问题出在哪里吗?我对Unity、C#和编程都很陌生,所以问题可能很明显。这是我使用的代码。如果你需要更多的细节或更多的代码,请问我。

        void OnTriggerEnter2D(Collider2D other)
        {
            if (other.tag == "Enemy") ;
            {
                Damage();
            }
        }

对不起,英语不好,我不是本地人,还在上高中。

c# unity3d
1个回答
0
投票

这是个很简单的bug。你的if语句后面有一个不需要的分号(;)。这在{}块之前结束了if语句的范围,所以每次都会运行Damage()函数。

if (other.tag == "Enemy") ;

应该是

if (other.tag == "Enemy")
© www.soinside.com 2019 - 2024. All rights reserved.