投稿
ASA fusuian
やっとできました! ゆったりmgおかぴーさんのリクエストの、2枚のBGを使ってどこまでも東に飛んでいくプログラムです。
9そうだね
プレイ済み
返信[1]
親投稿
ASA fusuian
プログラムリスト1/2 このBGSCR関数がほぼ全て。 西方向は宿題です。
0そうだね
プレイ済み
返信[2]
親投稿
ASA fusuian
リスト2/2 半分はBGのぬりつぶし。 なお1枚目の頭のBWは一画面分のBGの幅で、25以上なら好きな値にできます。
0そうだね
プレイ済み
返信[3]
親投稿
Sきち 4405chan
スクショを見て「渡り鳥の冒険」という名前を思い付きました。
0そうだね
プレイ済み
返信[4]
親投稿
いきなりですが、スプライトの側面って4つあるじゃないですか?(底辺含む) その側面の当たり判定っていうか。 側面に当たったとき、側面によってそれぞれ違うことをするって言う命令はありますか?もしなければ、DEFでつくってもらえますか?当たった側面によって戻り値が違うとか言うやつです。 SPCOLを1つのループ内に複数設置するとか言うのはなしでお願いします。都合が悪くなるので。
0そうだね
未プレイ
返信[5]
親投稿
ASA fusuian
衝突した相手との位置関係ということですね。 それは相手のスプライトの位置をSPOFS OUTでとって、自分の位置と比べます。 自分の位置がX,Yで相手の位置がEX,EYとすると、 DX=EX-X DY=EY-Y として、DXがプラスなら相手は右、マイナスなら左。 DYがプラスなら相手は下、マイナスなら上ということになります。
0そうだね
プレイ済み
返信[6]
親投稿
ありがとうございます WAIT,VSYNCを使わずにフレーム数を計測する方法はありますか?もしあるならばそれは関数ですか?命令ですか?←これによって変数に代入できるかどうかが決まる・・・
0そうだね
未プレイ
返信[7]
親投稿
ASA fusuian
プチコン3号が起動してからのフレーム数を返すMAINCNTというシステム変数があります。ある時点でこの値を変数Mにとり、ひとしきり処理をしたあとMとMAINCNTを比較して、同じならまだ1/60秒経っていないことになります。 …これで役に立ちますか?
0そうだね
プレイ済み
返信[8]
親投稿
ありがとうございます。
0そうだね
未プレイ
返信[9]
親投稿
スプライト側面についてなんですけど、 スプライトとスプライト側面が当たったとき、 その側面だけではなく他の側面も1ドット当たってしまうことになりませんか?それと、もし0の場合は正の数にはいりますか?負の数にはいりますか?
0そうだね
未プレイ
返信[10]
親投稿
あの?
0そうだね
未プレイ
返信[11]
親投稿
あとGPUTCHRが追加したので、グラフィックのサイズをスプライトのSPSCALEみたいに縮小拡大することは可能ですか?
0そうだね
未プレイ
返信[12]
親投稿
ASA fusuian
他の側面も当然当たっていることになりますが、適当に無視して縦かヨコのみで判定するか、ナナメも考慮するか、角度をしっかり求めるかは、どんなプログラムにしたいかで決めることになりますね。 DXとDYどっちも0ということなら、ピッタリ重なっているということになります。 DXとDY両方が0だったら、二つのスプライトはピッタリ重なっていることになります。
0そうだね
プレイ済み
返信[13]
親投稿
ASA fusuian
GPUTCHRはテキスト文字列を拡大する命令ですが、プチコン3号の仕組みとして、テキストのフォントは隠しグラフィックページとも言えるGRPFに書き込まれています。 先に文字を絵に書き換えた画像を作って、プログラムスタート時にロードすればできそうですね。
1そうだね
プレイ済み
返信[14]
親投稿
じゃあ、スプライトとBGのように異なるグラフィックではどのように4つの側面を判定できますか? 因みにBGは座標は変わりません
0そうだね
未プレイ
返信[15]
親投稿
ASA fusuian
スプライトとBGの場合は、スプライトがこれから進む先の座標のBGをBGGETで取ればいいかな? 右へ進むときにBGに当たれば、bgの左側に当たったことになります。
0そうだね
プレイ済み
返信[16]
親投稿
ELSEIFを分かりやすく説明してください。 自分はIFで書いた条件が不成立の時に、下のELSEIFの条件を実行して、それもダメだったら下のELSEIFを実行する的な感じだと思うのですが・・・ 合ってますか?
1そうだね
未プレイ
返信[17]
親投稿
あの・・・?
0そうだね
未プレイ
返信[18]
親投稿
ASA fusuian
その理解でいいと思います。 よくわからないときはとりあえず短いプログラムを書いて、動かしてみるといいですよ。 INPUT A IF A==0 THEN ?"ZERO" ELSEIF A==1 THEN ?"ONE" ELSE ?"MANY" ENDIF とか。
0そうだね
プレイ済み