0

私はXNAの完全な初心者であり、現在このチュートリアルから学んでいます。

http://msdn.microsoft.com/en-us/library/bb203893.aspx

この問題は、ステップ5の完了後にプログラムを実行するときに発生します。他の人がコメントで同じ問題を指摘しているので、それはタイプミスではないと思います。

私のスプライトは、プログラムの実行時に画面上で自動的に跳ね返ることを目的としていますが、0,0から1ピクセルも移動しません。

using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace WindowsGame1
{

public class Game1 : Microsoft.Xna.Framework.Game
{
    GraphicsDeviceManager graphics;
    SpriteBatch spriteBatch;

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


    protected override void Initialize()
    {


        base.Initialize();
    }

    Texture2D myTexture;

    Vector2 spritePosition = Vector2.Zero;

    Vector2 spriteSpeed = new Vector2(50.0f, 50.0f);

    protected override void LoadContent()
    {

        spriteBatch = new SpriteBatch(GraphicsDevice);
        myTexture = Content.Load<Texture2D>("Main");

    }


    protected override void UnloadContent()
    {

    }


     void UpdateSprite(GameTime gameTime)
    {
        //Move the sprite by speed, scaled by elapsed time

         spritePosition +=
            spriteSpeed * (float)gameTime.ElapsedGameTime.TotalSeconds;

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

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

         //Check for bounce.
         if (spritePosition.X > MaxX)
         {
             spriteSpeed.X *= -1;
             spritePosition.X = MaxX;

         }

         else if (spritePosition.X < MinX)
         {
             spriteSpeed.X *= -1;
             spritePosition.X = MinX;

         }

         if (spritePosition.Y > MaxY)
         {
             spriteSpeed.Y *= -1;
             spritePosition.Y = MaxY;
         }

         else if (spritePosition.Y < MinY)
         {
             spriteSpeed.Y *= -1;
             spritePosition.Y = MinY;
         }


    }


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



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

        base.Draw(gameTime);
    }
  }
}
4

1 に答える 1

4

UpdateSpriteメソッドはどこからも呼び出されません...

Updateメソッドをオーバーライドし、そこからUpdateSpriteメソッドを呼び出す必要があります...

編集:

これをゲームクラスに追加します。

protected override void Update(GameTime gameTime)
{
    UpdateSprite(gameTime);
}
于 2012-11-07T22:55:48.897 に答える