0

スプライトがジャンプしている間にアニメーションを作成する必要があります。キーが押された場合にアニメーションをロードしようとしましたが、機能しません。キーを押すとジャンプしSpaceます。他のすべてのアニメーションは機能します。だから、私の問題は、キーを押してアニメーションをロードすることです。使えると思いますGameTime.Elapsed.TotalMillisecondsが未確認です。私はとにかく新しいです、そしてそれは私の最初のゲームです。

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);
    }
  }
}

何を作ればいいですか?:D

4

1 に答える 1

0

あなたのコードがどのように機能するか正確にはわかりませんが、おそらく yau は次のようなものを書くことができます:

if (velocity.Y != 0)
{ 
PlayerAnimation.PlayAnimation(jump); 
velocity.Y -= 0.05f
}

および以下のインスト:

if (Keyboard.GetState().IsKeyDown(Keys.Space) && jumping == false)` 

あなたは書ける:

if (Keyboard.GetState().IsKeyDown(Keys.Space) && velocity.Y == 0)

その後、ジャンプブールの使用を完全にスキップできます。

于 2013-10-24T11:13:08.517 に答える