按键更改播放器精灵

时间:2015-10-22 01:22:18

标签: c# xna sprite monogame

我最近一直在进入单一游戏,但我遇到了一个问题。

我已经加载了一个玩家精灵,我已经开始运动,但我想要做的是当我向右/向左按下时改变精灵。我希望玩家船按照按键向左/向右倾斜。

这就是我目前的代码,正如你所看到的,我试图用if语句实现所需的效果,但我没有成功。

describe

这段代码的作用是向左/向右移动玩家,但玩家精灵没有正确改变。如果有人可以帮我解决这个问题,那就太棒了。提前谢谢!

可根据要求提供Game1.cs(主要游戏类)

1 个答案:

答案 0 :(得分:1)

而不是处理所有这些bool,我要做的就是制作一个Enum。

所以你可以让Enum SpriteState具有不同的状态,然后是一个变量来保存currentSpriteState

 Enum SpriteState
 {
   Left,
   Right,
   Straight
 }

 SpriteState currentSpriteState = SpriteState.Straight;

改变状态的一个例子

  //generic condition and state change
if (condition) 
{
 currentSpriteState = SpriteState.Left;
}
else if(condition)
{
 currentSpriteState = SpriteState.Right;
}
else currentSpriteState = SpriteState.Straight;

然后在Draw()中有一个基于currentSpriteState

的开关案例
 switch(currentSpriteState)
{
  case SpriteState.Left:
   spriteBatch.Draw(moveLeft, Position, null, Color.White, 0f,
   Vector2.Zero, 1f, SpriteEffects.None, 0f);
  break;

  case SpriteState.Right:
   spriteBatch.Draw(moveRight, Position, null, Color.White, 0f,
   Vector2.Zero, 1f, SpriteEffects.None, 0f);
  break;

  case SpriteState.Straight:
   spriteBatch.Draw(PlayerTexture, Position, null, Color.White, 0f,
   Vector2.Zero, 1f, SpriteEffects.None, 0f);
  break;
}

Bool在技术上可以起作用,但这样更干净,更容易阅读,可能只是解决你的问题。