0

私はXNAを初めて使用し、スプライトをジャンプさせるのに苦労しています。これまでのところ、スプライトが実行できるのは、X軸を横切って左右に移動することだけです。

public class Game1 : Microsoft.Xna.Framework.Game
{
    GraphicsDeviceManager graphics;
    SpriteBatch spriteBatch;
    Texture2D sprite;
    Vector2 spritePosition;

    protected override void Update(GameTime gameTime)//
    {
        UpdateSprite(gameTime);
    }

    public Game1()//
    {
        graphics = new GraphicsDeviceManager(this);
        Content.RootDirectory = "Content";
    }

    protected override void LoadContent() //
    {
        spriteBatch = new SpriteBatch(GraphicsDevice);
        sprite = Content.Load<Texture2D>("Main");

    }

    void UpdateSprite(GameTime gameTime) //
    {
        //Sprite Movement and Controlls

        //Movement Perametres, not yet in use

                int MaxX =
                   graphics.GraphicsDevice.Viewport.Width - sprite.Width;
                int MinX = 0;

                int MaxY =
                    graphics.GraphicsDevice.Viewport.Height - sprite.Height;
                int MinY = 0;

                KeyboardState keystate = Keyboard.GetState();


                //Movement Right
                if (keystate.IsKeyDown(Keys.D))
                {
                    sprite = Content.Load<Texture2D>("1");
                }

                if (keystate.IsKeyDown(Keys.D))
                {
                    spritePosition.X = spritePosition.X + 1;

                }

                //Movement Left
                if (keystate.IsKeyDown(Keys.A))
                {
                    spritePosition.X = spritePosition.X - 1;
                }

                if (keystate.IsKeyDown(Keys.A))
                {
                    sprite = Content.Load<Texture2D>("a");
                }

               // Null Movement sprites
                 if (keystate.IsKeyUp(Keys.D)) 
                     if (keystate.IsKeyUp(Keys.A))
                 {
                    sprite = Content.Load<Texture2D>("Main");
                 }

        UpdateSprite(gameTime);
    }

    protected override void Draw(GameTime gameTime)//
    {
        GraphicsDevice.Clear(Color.CornflowerBlue);

        // TODO: Add your drawing code here

        spriteBatch.Begin(SpriteSortMode.BackToFront, BlendState.AlphaBlend);
        spriteBatch.Draw(sprite, spritePosition, Color.White);
        spriteBatch.End();

        base.Draw(gameTime);
    }
 }

あまり技術的ではないでください。私は自分が知っているすべてのプログラミングを自分で学んだので、多くの用語が頭に浮かぶでしょう。元のコードに実装されているのを見て、答えを最もよく理解しています。マシュー、どうもありがとう。

4

1 に答える 1

3

UpdateSprite()は、ジャンプボタンをチェックするものが必要です。何かのようなもの:

if(keystate.IsKeyDown(Keys.Space))
{
     spritePosition.Y -= 1;
}

次に、キーが離されているかどうかを確認し、元の位置まで下げるspritePosition.Yか、最大の高さに達したら位置を下げます。spritePosition.Yただし、元の変数に戻れるように、必ず現在の変数を一時変数に 保存する必要があります。

これは決して正確に行うべき方法ではありませんが、それを理解するのに役立つ良いスタートになるはずです。

于 2012-11-09T17:35:48.320 に答える