終盤、テクスチャ表示の際のtu、tvのズレでてこずりましたが、無事、「シューティングテンプレート」ということで作業が一段落しました。後は、キャラクタの追加、場面設定、効果音、BGMの充実などを行うだけです。えー、それと、背景のスクロールが未完成なんで、それはまた考えないとなりませんな。

「テクスチャ表示の際のtu、tvのズレ」の問題について触れておきますか。複雑なアニメーションを駆使したゲームでは、いくつものキャラクタ画像を利用することになります。しかし、その画像の数だけビットマップファイルを用意するのは、面倒です。そこで、一つのテクスチャに複数の画像を載せてしまい、テクスチャの一部分を表示することで、複数キャラクタの描画を簡単にしているのですが、、、

ただ単にピクセル単位座標をもとにtu、tv(テクスチャ座標)を算出しただけでは、画面に表示されるキャラクタの端にズレが生じます。これは、DirectXがテクスチャをメモリ展開する際に、そのサイズを2のn乗として管理しているところ、座標の算出過程に切り捨てが行われるところに原因があります。この問題を解消するには、

・テクスチャファイル(.bmpファイル)の幅・高さを2のn乗(256、512、1024とか)にする

・tu、tvを算出するために指定するピクセル値に、0.5をプラスしておく

などの処置が必要になります。こんなことはDirectXのヘルプ(MSDN?)にも載っていないことなんで、自力で原因を追求する必要があったんですね。←もしMSDNでこれらの資料を発見された方は教えてくださいな☆

まぁ自力でとはいったものの、Web上には同じような問題を抱えた同士がウジャウジャいたので、その方達の発言を参考にさせてもらったというのが正解ですね。

せっかく、「テンプレート」という形で区切りをつけたので、こいつをプロジェクトごとZIP圧縮しておきますわ。配布、改造などは自由なんで、ドシドシとやってください。でもその際は、キャラクタ画像、効果音でフリー素材を使用しているので、そちらのサイト様の規定を熟読するよう、お願いしますね。

キャラクタ画像:

http://www2u.biglobe.ne.jp/~presys/

背景画像:

http://ww35.tiki.ne.jp/~izumiryu/

効果音:

http://utm-game-web.hp.infoseek.co.jp/

シューティングテンプレート “fight” のダウンロードはこちら:

http://www2s.biglobe.ne.jp/~yamadai/fight.zip

※DirectX9.0cが必要です。プロジェクトを編集するときは、AB Ver4.03を使いましょう。

解凍したら、fight.exeを起動させてみてください。いきなりゲームが開始されるので、あとは方向キーで移動、スペースキーでショットを打ちます。

テンプレートということなので、必要最低限の制御しかありません。よって、敵機にあたっても死にません(笑)。物足りない方は、fight.pjをActiveBasicで開いて、編集してやってください。

そのうち、このテンプレートの作り方を、段階を踏む形でDirectXプログラミング講座に追加しようと思います。ご期待ください☆