C# 带有Game.IsKeyDown的If语句未按预期工作
编辑:我用下面的代码修复了它 我试着做一个简单的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
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
无法按预期工作的原因。我希望当我按下该键时,该语句为trueGame.LocalPlayer.Character.isfirefile!=true
和thisGame.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;
}
}