首页 > 解决方案 > 如果带有 Game.IsKeyDown 的语句未按预期工作

问题描述

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

我正在尝试制作一个简单的 if 语句来查看玩家是否接近火力。如果他在火附近并且没有按下钥匙,他会受到所示的伤害。这完美地工作。但是,如果按键被按下,玩家仍然会受到伤害。

损坏布尔值在类上方定义为static bool damage = false;

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

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


            }

当玩家靠近着火地点并且按下键以免受到伤害时,我应该怎么做?

标签: c#if-statementkeypress

解决方案


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

Key press 确保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(...)如果按键被按下,我不确定是否返回 true。

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

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就没有按照您的预期进行。


推荐阅读