脱線、アドベンチャー編

■日本語フォントを出そうとした。
ん・ぱか工房」を参考に日本語を表示できたのですがいろいろと大変そうです。日本語を表示するには使用する文字を登録しておく必要があり、今回は「コンテントプロセッサ」で文字を変換し登録します。(「コンテントプロセッサ」の説明を入れると長くなるので省きます。)後は「FONTに甘かった」と同じように文字指定をします。
登録していない文字を表示しようとするとエラーになりますので注意してください。ついつい、登録していない文字を使用して画面にバッテンが!
■そして、脱線
せっかく日本語も出たし、アドベンチャー画面をつくりたくなりました。ポリゴンとはまったく関係のないので許してください。まずは表示するテクスチャを用意しましょう。

back.png 背景に表示するグラフィック(背景写真をデジカメで撮ってきます)
sufie.png 会話するキャラクター(版権に引っかからないように自分で用意しましょう)
menu.png 文字を表示するエリア(文字が見やすいように暗めの画像)

テクスチャは抜き指定して使用します、PNGの場合は「フォトショップ」で「アルファチャンネル」を入れてセーブしてください。(黒い部分が抜けて表示する事になります。)

■画面を重ねよう。
用意したテクスチャを画目からみて以下のように重ねて見ます。

■ソース

namespace WindowsGame
{
    public class Game1 : Microsoft.Xna.Framework.Game {
        private GraphicsDeviceManager graphics;
        private ContentManager        content;
        private SpriteFont            font;
        private SpriteBatch           sprite;
        private Texture2D             characterTexture;
        private Texture2D             menuTexture;
        private Texture2D             backTexture;

        public Game1() {
            graphics = new GraphicsDeviceManager(this);
            content = new ContentManager(Services);
        }

        protected override void LoadGraphicsContent(bool loadAllContent) {
            if (loadAllContent) {
                sprite = new SpriteBatch(graphics.GraphicsDevice);
                font = content.Load<SpriteFont>("SpriteFont1");
                characterTexture = content.Load<Texture2D>("sufie");
                menuTexture = content.Load<Texture2D>("menu");
                backTexture = content.Load<Texture2D>("back");
            }
        }

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

            sprite.Begin();
            sprite.Draw(backTexture, new Vector2(0, 0), Color.White);
            sprite.Draw(characterTexture, new Vector2(340, 0), Color.White);
            sprite.Draw(menuTexture, new Vector2(20, 450), Color.White);
            sprite.DrawString(font, "アドベンチャーゲーム作ってどうするの?", new Vector2(30, 460), Color.White);
            sprite.DrawString(font, "(ロケ地:サンタモニカビーチ)", new Vector2(330, 520), Color.White);
            sprite.End();

            base.Draw(gameTime);
        }
    }
}

■完成画面