プレイ日記
レイヤーと、フラグとは、なにですか?
3そうだね
プレイ済み
返信[1]
親投稿
レイヤーは層。最大4枚重ねて使える。 フラグは座標単位をマスからドットに変えたいときに使う。
0そうだね
プレイ済み
返信[2]
親投稿
画像の、レンガブロックに当たり判定をつけるとしたら、どうすればいい? てえすか。教えて下さい。
0そうだね
プレイ済み
返信[3]
親投稿
画像わすれ
0そうだね
プレイ済み
返信[4]
親投稿
BGとの当たり判定に困ってる感じですね。 BGはスプライトと違って、それ自体に当たり判定がつくわけではありませんので、自分でその位置にあるBGを調べて判定する必要があります。 レイヤーはBGPUTなどでBGを配置している時にも指定しているはずです。それが自分の置いたレイヤーです。なので、そのレイヤーに対しての位置を指定して、そこにあるキャラ番号を取得して、その番号によって当たりかどうか判定するわけです。 フラグは指定しなかったり0にした場合は、BG(ブロック)座標での指定になります。BGキャラは16×16ドットで構成されているので、通常スプライトの座標からBG座標にするには16で割る必要があります。ただフラグを指定するとこの16で割らなくてもよくなるのでスプライトの位置などからBG当たり判定する場合はフラグを指定するのが便利です。
0そうだね
プレイ済み
返信[5]
親投稿
ちなみにBG(ブロック)座標というのは、BGPUTなどで指定している場所と同一です。なので、例えば47行目でBGPUTしている場所の場合は、 ?BGGET(0,7,12) とすれば、578と返ってきます。この場合はBG座標で指定しているのでフラグは指定していません。
0そうだね
プレイ済み
返信[6]
親投稿
詳しくありがとうございます。 てきるかな~~
0そうだね
プレイ済み
返信[7]
親投稿
578とはなんですか?
0そうだね
プレイ済み
返信[8]
親投稿
578は47行目でBGPUTしているBGキャラ番号ですよ。この番号が何の絵だったかは覚えてませんが、絵の番号のことです。
0そうだね
プレイ済み
返信[9]
親投稿
あ、49行目が、レンガです
0そうだね
プレイ済み
返信[10]
親投稿
578は、地面BGです。
0そうだね
プレイ済み
返信[11]
親投稿
こう? でも、エラーになります! どうしおう
0そうだね
プレイ済み
返信[12]
親投稿
そこに書いても駄目ですよ。それがエラーになる理由がわからないとちょっと厳しいかもしれませんね…。 命令を続けて1行に書くときは:(コロン)で繋ぐ必要があります。ただその場合でも上記の書き方だとBGGETの戻り値を処理してないので、?(PRINT)や変数などを使って戻ってきた値を処理する必要があります。 僕の書いた ?BGGET(0,7,12) はその位置のBGキャラ番号をPRINTする為の命令です。
0そうだね
プレイ済み
返信[13]
親投稿
PRINT¨BGGET(0,7,12) ¨ こう?
0そうだね
プレイ済み
返信[14]
親投稿
PRINT BGGET(0,7,12) とするとBGGET命令で取得した値をPRINT(プリント)で画面に表示することが出来ます。 ""で囲ってしまうと、その囲った内容の文字列(テキスト)が表示されるだけですよ〜
0そうだね
プレイ済み
返信[15]
親投稿
そうですか、 ご親切にありがとうございます
0そうだね
プレイ済み
返信[16]
親投稿
こんなですか? RANすると、左に数字が出ました。
0そうだね
プレイ済み
返信[17]
親投稿
使い慣れてないコマンドのテストはダイレクトモードでやってみるのもいいですよ。 さっきのPRINT分もダイレクトモードで直接打てば結果が表示されますし。 ただBG表示されてないといけないんで、ちょっと文字が見にくくなるかもしれませんけどね…
0そうだね
プレイ済み
返信[18]
親投稿
そうすると416と表示されますよね? それがBGキャラ番号になります。 BGGET命令はこのように指定した場所のBGキャラ番号を得るための命令なので、実際は、他の処理をしながらその場所を調べたりしてIFで分岐などするわけです。 ちょっと難しいかもしれませんが、こんなサンプルもあります。このサンプルではBGGET命令を使ってBGとの当たり判定をしています。参考にしてみてくださいー。 日付:2014/12/11 第2回、解説つきサンプル講座。 サイドビューの画面によるジャンプとBGとの当たり判定のサンプルです。 https://miiverse.nintendo.net/posts/AYIHAAAEAAA5VHwZFPOzCA
0そうだね
プレイ済み
返信[19]
親投稿
わかりました。 判定は、IFを使いますか?
0そうだね
プレイ済み
返信[20]
親投稿
ちょっと入れ違いになっちゃってますが、判定にはIFを使いますね。 IFは判定の為の命令なので、判定が必要な場合はほぼ必ず使います。
0そうだね
プレイ済み
返信[21]
親投稿
OKです。 今URL開いて見ています。
0そうだね
プレイ済み
返信[22]
親投稿
そのまま適用出来るかどうかはわかりませんが、考え方は書いてある感じだと思います。まあサンプルに関しても何か質問があるときは、こちらにでも書いてくれれば答えますよ。 頑張ってください!
0そうだね
プレイ済み
返信[23]
親投稿
あなたの書いた命令をコーピして、やってみたいと思います。
1そうだね
プレイ済み