2018年08月20日

VB.NETでDirectX~第3回・DrawGraphのバリエーションについて学ぼう!

博士:うむ、わしが博士である。

助手:助手です。よろしくお願いします。それで博士。今月は何をするんでしょうか?

博士:うむ。今月は、先月教えたDrawGraph関数のバリエーションについて説明するぞ! しっかりとついてくるがよい!

助手:おぉ! 博士がやる気いっぱいだ! よろしくお願いします!

[DrawTurnGraph]

博士:さて、今回は、前回とは違う画像を使って学んでいくとするぞ。下の画像をダウンロードして、プロジェクトのDebugフォルダの中に入れておくのだ。

rocket.bmp

助手:はい、できましたよ。

博士:では始めていくとするぞい。

----------
hChara = LoadGraph("chara.bmp")
----------

博士:この部分を……

----------
hChara = LoadGraph("rocket.bmp")
----------

博士:こう書き換え……さらに……

----------
DrawGraph(50, 50, hChara, 1)
----------

博士:この部分を……

----------
DrawGraph(50, 150, hChara, 1)
DrawTurnGraph(50, 250, hChara, 1)
----------

博士:このように書きなおしてみるのじゃ。

助手:かたかた……できました、博士。

博士:では、実行してみよう。どうじゃ?

助手:はい……あっ!

vbdx1808-01.JPG

助手:下のロケットが、ちょうど上のロケットとは逆向きに書かれています!

博士:うむ、この通り、DrawTurnGraphは、画像を左右逆向きに書く関数なのじゃ。例えば、キャラクターを左右両方の向きに書く必要があるときに便利じゃぞ。

[DrawExtendGraph]

博士:さて、次はDrawExtendGraphじゃ。先ほど追加した文の二行目。

----------
DrawTurnGraph(50, 250, hChara, 1)
----------

博士:ここを……

----------
DrawExtendGraph(50, 250, 90, 290, hChara, 1)
----------

博士:このように書きなおすのじゃ。

助手:はい、できました。実行してみますね……おぉっ!!

vbdx1808-02.JPG

助手:下のロケットが小さくなっています!

博士:これだけではないぞ。今度は同じところを……

----------
DrawExtendGraph(170, 150, 370, 350, hChara, 1)
----------

博士:このように書きなおしてみるのじゃ。どうかな?

vbdx1808-03.JPG

助手:今度は、右のほうに、大きいロケットが表示されました!

博士:このように、DrawExtendGraphは、画像を拡大・縮小して表示する関数なのじゃ。元となる画像を、(1番目の引数,2番目の引数)と(3番目の引数,4番目の引数)を対角線とする四角形の領域に拡大・縮小して表示するのじゃ。

助手:なるほど。

博士:ちょっとややこしいが、使いこなせるようになると、例えば大きさの変わるキャラクターを出す時に便利じゃぞ。

助手:そうですね。

[DrawRotaGraph]

博士:では最後は、画像を回転させてみるとしよう。さっきと同じように、

----------
DrawExtendGraph(170, 150, 370, 350, hChara, 1)
----------

博士:と書いたところを……

----------
DrawRotaGraph(250, 200, 1, 3.14 / 4, hChara, 1, 0)
----------

博士:このように書き替えて、実行してみるのじゃ。

vbdx1808-04.JPG

助手:今度は、右のほうに、ロケットが少し傾いて表示されてますよ!

博士:うむ。このDrawRotaGraphは、画像を回転させて表示する関数なのじゃ。この関数は引数の内容が、これまでのものとは違っておるので、一つずつ説明していくとするぞ。

助手:はい。

博士:まず最初の二つは描く位置じゃが、DrawGraph、DrawTurnGraph、DrawExtendGraphの三つが、ここが画像の『左上に』なるように表示するのに対して、DrawRotaGraphでは、ここで指定した位置が、画像の『中心に』なるように表示するのじゃ。間違えないように気を付けるのじゃぞ。

助手:はい、わかりました。

博士:そして次の数字は、画像の拡大・縮小の倍率じゃ。この数字を1より小さくすれば縮小し、1より大きくすれば拡大するのだ。例えば、0.4と指定すれば、元の画像の40%の大きさで書くわけじゃな。

助手:はい。そして四つ目は?

博士:これは、画像を回転させる角度じゃ。これはラジアンという特別な角度で指定する。

助手:ラジアン、ですか……少し難しいですね。

博士:心配はいらん。通常の角度とラジアンとは、次の式で変換できるからな。

----------
角度→ラジアン:角度×円周率÷180
ラジアン→角度:ラジアン×180÷円周率
----------

博士:これを基に、計算する関数を作ればなおよしじゃな。

助手:わかりました。そしてその次は、画像のハンドルですね。

博士:その通り。そして、6つ目は毎度おなじみの、背景を透過するかどうかを指定するものじゃ。そして7つ目は、画像を左右反転して表示するかどうか。1を指定すると、左右反転して表示するのじゃ。

助手:なるほど、わかりました。

博士:この他にも、バリエーションはいくつかあるが、ここにある3つのバリエーションと、基本であるDrawGraphがあれば、ゲームを作るには問題……問題……問題ない……ない……

助手:?

博士:うっ!!(ばた

助手:は、博士?

おーちゃん:どうやら、頑張りすぎて燃え尽きたようじゃのう。少し眠ればすぐに目を覚ますじゃろう。

助手:は、はぁ……。

おーちゃん:さて、次回はキーボードやジョイパッドを使って、キャラクターを移動させる方法について説明するぞ。また次回じゃ。

博士:また来月じゃ~(寝言

助手:………。



※次の更新は、8月23日、『たまには息抜きにこんなゲームはいかが?『野球ペンデュラム』』の予定です。お楽しみに!
posted by 裏編 at 15:17| VB.NETでDirectX | 更新情報をチェックする