我想在按键后 2 秒内制作动画。例如,我想加载一个动画进行拍摄,我希望它只需要 2 秒,之后它会转回“停留”动画。
class Player
{
PlayerAnimation animation;
Animation walk;
Animation stay;
Animation jump;;
public Vector2 position;
public Vector2 velocity;
public Rectangle rect;
public bool jumping = false;
public int health = 5;
public Vector2 Position{ get { return position; } }
public Player() { }
public void Load(ContentManager Content) {
walk = new Animation(Content.Load<Texture2D>("walk"), 46, 0.1f, true, rect);
animazioneMinima = new Animation(Content.Load<Texture2D>("stay"),37, 0.15f, true, rect);
jump = new Animation(Content.Load<Texture2D>("jump"), 51, 0.1f, true , rect);
}
public void Update(GameTime gameTime)
{
position += velocity;
rect = new Rectangle((int)position.X, (int)position.Y, 43, 46);
Input(gameTime);
if (velocity.X != 0)
PlayerAnimation.PlayAnimation(walk);
else if (velocity.X == 0)
PlayerAnimation.PlayAnimation(stay;
if (velocity.Y < 10)
velocity.Y += 0.4f;
}
private void Input(GameTime gameTime)
{
if (Keyboard.GetState().IsKeyDown(Keys.D))
velocity.X = (float)gameTime.ElapsedGameTime.TotalMilliseconds / 3;
else if (Keyboard.GetState().IsKeyDown(Keys.A))
velocity.X = -(float)gameTime.ElapsedGameTime.TotalMilliseconds / 3;
else velocity.X = 0f;
if (Keyboard.GetState().IsKeyDown(Keys.Space) && jumping == false)
{
position.Y -= 5f;
velocity.Y = -9f;
jumping = true;
}
}
public void Draw(GameTime gameTime, SpriteBatch spriteBatch)
{
SpriteEffects rotate = SpriteEffects.None;
if (velocity.X >= 0)
rotate = SpriteEffects.None;
else if (velocity.X < 0)
rotate = SpriteEffects.FlipHorizontally;
PlayerAnimation.Draw(gameTime, spriteBatch, position, rotate);
}
}
}