Game.IsKeyDown 的 If 语句未按预期工作

If statement with the Game.IsKeyDown not working as intended

编辑:我使用下面的代码修复了它。

我正在尝试做一个简单的 if 语句来查看玩家是否接近火力。如果他靠近火并且没有按下键,他将受到指示的伤害。这非常有效。但是,如果按下该键,玩家仍会受到伤害。

伤害布尔值在 class 上方定义为 static bool damage = false;

            if (isPlaying)
            {
                player.Stop();
                Game.LocalPlayer.Character.IsFireProof = false;

            }
            else
            {
                player.PlayLooping();
                Game.LocalPlayer.Character.IsFireProof = true;


            }

当玩家靠近开火位置并且按下按键不受到伤害时,我应该怎么做?

这里我们没有太多可以继续的内容,但我认为你在这里混淆了你的逻辑。

按键确保 Game.LocalPlayer.Character.IsFireProof = true 它应该只用于执行此操作,并且可能在您目前提供给我们的代码之外。

那么您的代码将是:

if (Vector3.DistanceSquared(Game.LocalPlayer.Character.Position, locationData.GoToPosition) < 10f )
{
    if( Game.LocalPlayer.Character.IsFireProof != true)
    {            
        Game.LocalPlayer.Character.Health -= 1;
    }
}

** 编辑 **

好的。根据您的评论。

我不确定 Game.IsKeyDown(...) returns 键是否按下是否正确。

因为在逻辑语句中放置函数调用不是很好的做法,因为它们很难调试尝试:

if (Vector3.DistanceSquared(Game.LocalPlayer.Character.Position, locationData.GoToPosition) < 10f )

    {
        bool damage != Game.IsKeyDown(Settings.SCBA);

        if( damage == true)

        {            

            Game.LocalPlayer.Character.Health -= 1;

        }

    }

如果按下或释放按键没有效果,那么 Game.IsKeyDown 没有按照您的预期进行。