-1
我想在按下某個鍵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);
}
}
}