好的,所以我正在 XNA 中创建一个游戏,Visual C# 2010 Express Edition。我有一个可以成功完成运行周期的简笔画,所以我希望添加一个“闪避”功能。如果你按住shift,你可以躲避——这很管用。但是后来我用动画在我的精灵表中添加了一个额外的层 - 并在代码中声明如果按住 shift 和 A 或 shift 和 D ,那么底行的动画将循环播放。它只进入下一帧并从那里移动,正如我在标题中所说,这很可能是程序无法同时检测到两个按键的结果。这是我的代码的摘录,任何帮助将不胜感激。
else if (keyboardstate.IsKeyDown(Keys.LeftShift))
{
currentFrame.X = 0;
currentFrame.Y = 8;
}
if (keyboardstate.IsKeyDown(Keys.LeftShift) && keyboardstate.IsKeyDown(Keys.A) && killed == false)
{
pos.X -= speed;
this.flip = SpriteEffects.FlipHorizontally;
leftPress = true;
timeSinceLastFrame += gameTime.ElapsedGameTime.Milliseconds;
if (timeSinceLastFrame > millisecondsPerFrame)
{
timeSinceLastFrame -= millisecondsPerFrame;
++currentFrame.X;
if (currentFrame.X >= 8)
{
currentFrame.X = 0;
}
}
}
if (keyboardstate.IsKeyDown(Keys.LeftShift) && keyboardstate.IsKeyDown(Keys.D) && killed == false)
{
pos.X += speed;
if (leftPress == true)
{
this.flip = SpriteEffects.None;
}
timeSinceLastFrame += gameTime.ElapsedGameTime.Milliseconds;
if (timeSinceLastFrame > millisecondsPerFrame)
{
timeSinceLastFrame -= millisecondsPerFrame;
++currentFrame.X;
if (currentFrame.X >= 8)
{
currentFrame.X = 0;
}
}
}
else if (keyPress.IsKeyUp(Keys.LeftShift) && keyRelease.IsKeyDown(Keys.LeftShift) && killed == false)
{
currentFrame.X = 0;
currentFrame.Y = 0;
leftPress = false;
}
PS这是我的spritesheet供参考。:) http://oi43.tinypic.com/2v1uohg.jpg
PSS 这里的一切都位于Update 方法中。