我最近一直在进入单一游戏,但我遇到了一个问题。
我已经加载了一个玩家精灵,我已经开始运动,但我想要做的是当我向右/向左按下时改变精灵。我希望玩家船按照按键向左/向右倾斜。
这就是我目前的代码,正如你所看到的,我试图用if语句实现所需的效果,但我没有成功。
describe
这段代码的作用是向左/向右移动玩家,但玩家精灵没有正确改变。如果有人可以帮我解决这个问题,那就太棒了。提前谢谢!
可根据要求提供Game1.cs(主要游戏类)
答案 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在技术上可以起作用,但这样更干净,更容易阅读,可能只是解决你的问题。