師匠T:うむ、師匠Tである! 今回もびしびしといくぞ!
弟子D:弟子Dだ! 今回もびしびしと師匠越えを……ぐはあっ!!(飛び蹴りを受けて吹っ飛ぶ
たわけが。そう簡単にお主に越えさせはせぬわ。さて、前回はキャラの表示をやった。今回は、キャラの移動をやっていくとするぞ。
は、はい……。
それでは、さっそくいくとしよう!
【 キャラを移動させてみよう! 】
さて。Spriteクラス(とそれを継承したクラス)では、キャラを移動させるのにMoveメソッドを使う。使い方はこうじゃ。
〇〇〇.Move(X移動量, Y移動量)
これを実行させると、ここの引数で指定した分だけキャラが動くのじゃ。例えば……
〇〇〇.Move(3, -2)
としてやると、現在地から左に3ドット、上に2ドットの位置にスプライトが移動するわけじゃな。
ふむふむ。
ではさっそく、このMoveメソッドとあと一つ、GetJoypadInputStateメソッドを使って、自機の移動を実装していくとしようぞ。さっそく、MyCharaModuleのMyCharaMove()サブルーチンの中に、次のように書くのだ。
おっと、その前にModule MyCharaModuleの文の前に次の文を書いておかぬとな。
Imports DxLibDLL.DX
………。
こほん。では改めて、MyCharaMove()サブルーチンに、次のように書くがよい。
できたら動かしてみるがよい。どうじゃ?
おおっ! カーソルキーで自機が動くようになりましたよ! さすが師匠! ボケてなかったんですね!……いてっ。
わしはまだボケてはおらぬ。さて、この後は、この付け加えた部分について解説していくぞ。
【 キャラを移動させてみよう! 】
さて、まずはこの文からじゃ。
pad = GetJoypadInputState(DX_INPUT_KEY_PAD1)
GetJoypadInputState()関数の結果を、変数padに入れてるんですね。師匠、GetJoypadInputState()関数とはなんぞや?
うむ。これは、ジョイパッドやカーソルキーの入力内容を返す関数じゃ。()内の引数は、どのジョイパッドやキーボードの入力内容を返すかを表しておる。
DX_INPUT_KEY_PAD1→キー入力とパッド1
DX_INPUT_PAD1→パッド1
DX_INPUT_PAD2→パッド2
DX_INPUT_PAD3→パッド3
DX_INPUT_PAD4→パッド4
DX_INPUT_KEY→キー入力
ふむふむ。そこから、どのキーが押されたかをチェックするには、どうするのでしょうか?
うむ。それが、この下のIf文じゃ。この文を例にとって説明していくぞ。
If (pad And PAD_INPUT_UP) <> 0 Then
vy = -1 * SPEED
End If
DXライブラリではこのように、方向を表す定数が用意されておる。なのでGetJoypadInputState()の戻り値とこの方向の定数とでAndを取り、それが0かどうかを判定すればいいのだ。0でなければ押されていることになる。
なお、方向を表す定数には次のようなものがある。
PAD_INPUT_UP→上
PAD_INPUT_DOWN→下
PAD_INPUT_LEFT→左
PAD_INPUT_RIGHT→右
なるほど。
後は、各方向について押されたかどうかをチェックし、それに応じて移動量を表す変数vx、vyを設定してやり(上の文であれば、押された時に横の移動量である変数vyに-1*SPEEDを入れているわけじゃな。SPEEDは移動速度を表す定数じゃぞ)、その後に
oMyChara.Move(vx, vy)
このようにMoveメソッドで移動してやればOKじゃ。画面からはみ出したかどうかは、ReviseプロパティをDTRUEにしてあるので、クラス側でやってくれるので心配なしじゃ!
なるほど、よくわかりました!
うむ。それでは次回は自機の弾の発射について説明していく。復習を欠かしてはならぬぞ!
師匠も、ボケないように……(飛び蹴りを受けて吹っ飛ぶ
※次の更新は、『Plicyでフリーゲームを楽しもう!』の予定です。お楽しみに!