C# 带有Game.IsKeyDown的If语句未按预期工作

C# 带有Game.IsKeyDown的If语句未按预期工作,c#,if-statement,keypress,C#,If Statement,Keypress,编辑:我用下面的代码修复了它 我试着做一个简单的if语句,看看玩家是否靠近火。如果他靠近火场,并且没有按下钥匙,他将受到如图所示的损坏。这很好用。但是,如果按下该键,玩家仍将受到伤害 损伤布尔值在类上方定义为static bool damage=false if (isPlaying) { player.Stop(); Game.LocalPlayer.Character.IsFire

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

我试着做一个简单的if语句,看看玩家是否靠近火。如果他靠近火场,并且没有按下钥匙,他将受到如图所示的损坏。这很好用。但是,如果按下该键,玩家仍将受到伤害

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

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

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


            }

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

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

按键可确保
Game.LocalPlayer.Character.isfirefile=true
仅用于执行此操作,可能不在您目前提供给我们的代码范围内

那么您的代码将是:

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

如果按下或释放键无效,则
Game.IsKeyDown
没有达到预期效果。

显示Game.IsKeyDown(Settings.SCBA)的代码以及这是什么
locationData.GoToPosition
以及它与“火灾”的关系,以及为什么使用distancesquared而不是distance?locationData.GoToPosition
是火灾的实际位置。这很有效。我确信这一点,就好像我走近了我就受到了伤害一样。Settings.SCBA的代码是一个简单的类,它使用windows media player播放声音效果。如果(Game.IsKeyDown(Settings.SCBA)){SCBA.PlaySound();}它使用默认的soundplayerSounds,比如
Game.IsKeyDown(Settings.SCBA)
没有返回
true
,它就会这样激活。要进行测试,请用
if(true){damage=false;}else{…}
替换它,如果这样可以防止损坏,您必须找出
IsKeyDown
无法按预期工作的原因。我希望当我按下该键时,该语句为true
Game.LocalPlayer.Character.isfirefile!=true
和this
Game.LocalPlayer.Character.Health-=1错误。比如,如果你不按这个键,玩家的健康状况就会下降。但是,如果您按下该键,如果我忽略
Game.LocalPlayer.Character.isfirefile!=是的
那么会更容易吗?比如当我按下按钮时,玩家不会受到伤害如果不按下它,玩家会受到伤害我还添加了一个布尔值,但仍然没有运气,我完全删除了
游戏.LocalPlayer.Character.isfirefile
if (Vector3.DistanceSquared(Game.LocalPlayer.Character.Position, locationData.GoToPosition) < 10f )

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

        if( damage == true)

        {            

            Game.LocalPlayer.Character.Health -= 1;

        }

    }