背景画像のスクロール

背景画像を TotalGameTime を使ってスクロールします。

前田稔(Maeda Minoru)の超初心者のプログラム入門

プログラムの説明

  1. spriteBatch.Draw() には、幾つかのパラメータの設定方法があります。
    今回はウインドウサイズの二倍の画像を用意して TotalGameTime を使って背景画像をスクロールしてみましょう。
    背景画像のスクロールに使用する画像は、ページ先頭の画像を横に二枚並べた 1280*480 の画像です。
    スクロールしたときに、二枚の画像の境界が連続して見えるような画像を用意して下さい。
  2. texture は背景のスクロールに使用する 1280*480 の画像の領域です。
        Texture2D   texture;     // 背景のスクロールに使用する画像
        
  3. ウインドウのサイズを画像に合わせて 640*480 に設定します。
            public Game1()
            {
                graphics = new GraphicsDeviceManager(this);
                Content.RootDirectory = "Content";
                graphics.PreferredBackBufferWidth = 640;
                graphics.PreferredBackBufferHeight = 480;
            }
        
  4. LoadContent() で画像をロードします。
            protected override void LoadContent()
            {
                // Create a new SpriteBatch, which can be used to draw textures.
                spriteBatch = new SpriteBatch(GraphicsDevice);
    
                // TODO: use this.Content to load your game content here
                texture = Texture2D.FromFile(graphics.GraphicsDevice, "c:\\data\\test\\Utyu.jpg");
            }
        
  5. 背景画像をスクロールする Draw() 関数です。
    gameTime.TotalGameTime.TotalMilliseconds でミリ秒単位の時刻を取得します。
    これを 20 で割って、さらに 640 で割った余りを pos に格納します。
    pos の値は時間の経過と共に「0〜639」を繰り返します。
    X座標の基点を pos にして 640*480 のサイズで描画すると背景画像が左に流れるようにスクロールされます。
    20 の値を変えるとスクロールのスピードが変わるので試して下さい。
            protected override void Draw(GameTime gameTime)
            {
                graphics.GraphicsDevice.Clear(Color.CornflowerBlue);
    
                // TODO: Add your drawing code here
                spriteBatch.Begin(SpriteBlendMode.AlphaBlend);
                int pos = (int)((gameTime.TotalGameTime.TotalMilliseconds / 20) % 640);
                spriteBatch.Draw(texture, new Vector2(0, 0), new Rectangle(pos, 0, 640, 480), Color.White);
                spriteBatch.End();
    
                base.Draw(gameTime);
            }
        

前田稔(Maeda Minoru)の超初心者のプログラム入門

超初心者のプログラム入門(XNA(C#) game program)