プレイ日記
ケイン KEIN.HORGAN
シンプルRPG製作日記 9日目 キャラクターを動かそう ~その2~
5そうだね
プレイ済み
返信[1]
親投稿
ケイン KEIN.HORGAN
(前回の続き) さて、前回はキャラクターを上方向に動かせるようにしました。 今日は、上下左右に動かせるようにするのと、移動が早すぎる問題を解消しました。 まず上下左右への移動ですが、これは上方向への移動の応用です。 方向キーの検知を21行目~26行目で行っています。 ※前回と異なり、21行目のBUTTON() の引数が1 になっていますが、これは後で説明します。
0そうだね
プレイ済み
返信[2]
親投稿
ケイン KEIN.HORGAN
まず21行目で、何かボタンが押されているかどうかをチェックし、何かが押されているなら、押されたボタンを変数 B に確保します。 もし何も押されていないなら、Bには 0 が代入されます。 23行目~26行目で、変数 B の値をチェックします。#UP~#RIGHT は、上下左右に相当する数値の事で、この数値と B が一致するなら、該当する十字キーが押されている事になります。 十字キーが押されていれば、その方向に1マス進んだ位置にキャラクターを新しく配置するので、その座標を求めています。 ※新しいキャラクターの座標は、(NX,NY)になります。
0そうだね
プレイ済み
返信[3]
親投稿
ケイン KEIN.HORGAN
28行目では、新しい座標(NX,NY)と今の座標(X,Y)を比べて、位置に違いがあるか否かをチェックしています。 29行目~31行目では、位置に違いがある場合の処理をしています。 (今の座標にある文字を空白で上書きして、新しい座標にキャラクターを表示。その後で、今の座標(X,Y)の値を、新しい座標で上書きしています) このチェック(とキャラクター位置の更新作業)が終わったら、またボタンの入力チェック(21行目)に戻ります 以下繰り返す事で、キャラクターの移動を実現しています。
0そうだね
プレイ済み
返信[4]
親投稿
ケイン KEIN.HORGAN
※30行目と31行目のコードは、前回より修正が加えられています。 (30行目では NX を使用するようにしたのと、31行目では、X の値の更新をするようにしています) 次に、移動速度の問題ですが…… 解決方法は複数あるのですが、今回は、BREPEAT 命令を使いました。 この命令は、「ボタンの連射速度を指定する」命令です。 18行目でFOR ~ NEXT とともに使っていますが、繰り返し部分だけを見ると BREPEAT I,10,5 となります。
0そうだね
プレイ済み
返信[5]
親投稿
ケイン KEIN.HORGAN
これは、 「"I"ボタンが10フレームの間押されていたら、その後は、5フレーム毎に連射する」 という意味になります。 十字キーは、上下左右4ボタンある扱いで、番号としては 0 ~ 3が割り振られています。 そのため、FOR ~ NEXT で合計4回、BREPEAT を設定しています。 この連射機能ですが、どうもBUTTON(1) でないと上手く機能しないようなので、21行目のBUTTON()命令で1を指定する事にしました。
0そうだね
プレイ済み
返信[6]
親投稿
ケイン KEIN.HORGAN
さて、これで一応上下左右の移動は出来るようになりましたが、まだまだ移動処理としては不完全です。 その為、次回は衝突判定でも組み込もうかと思っていたのですが…… ちょっと実際にこの状態で動かしてみると、キャラクターが小さすぎる感じを受けます。 なので、次はキャラクターの移動はひとまずおいておいて、 次回:「2画面モード」 次々回:「フォントサイズの変更」 をやりたいと思います。 ※マップ画面とステータス表示画面が異なるのはいいにしても、マップ画面とメッセージ表示画面が異なるのはちょっとどうかなぁ、と思わないでもないですが…… でも、WIDTH 16 モードでの文字表示ってすごい読みづらいんですよね。
0そうだね
プレイ済み