トピック
shoum shoum0403

BGとSPの当たり判定

以前にも質問をしたのですが、BGGETの使い方がわかりません どのように使うのか、解説&&ソースお願いします!
1そうだね
プレイ済み
返信[1]
親投稿
shoum shoum0403
めんどかったらソースはなくてもいいので、どのように使うかだけお願いします!
0そうだね
プレイ済み
返信[2]
親投稿
say sayer.exe
まず、そーす
0そうだね
プレイ済み
返信[3]
親投稿
say sayer.exe
12行目:イチゴのスプライトの原点(この場合左上)のところのBGの値を取得してます 14行目:その取得した値が0でないなら”いて!”と表示します
0そうだね
プレイ済み
返信[4]
親投稿
TERA(LL) tera0413
こういう方法も有ります。
1そうだね
プレイ済み
返信[5]
親投稿
shoum shoum0403
sayさん>>なるほど、実行してみた結果よくわかりました。ありがとうございます。ちなみに、10行目をX=X+1にかえても、さほど差はありませんでした。何か違いでもあるのでしょうか? TERAさん>>全く理解不可です。
0そうだね
プレイ済み
返信[6]
親投稿
ΖΕΧ ZEX256
DATA_MAP【DADAXZ3】 解説はしません。 技は他人のプログラムを解析して盗むものです。 理解できないなら、それは基本知識が不足しているか、解析する努力が足りない場合です。 もちろん、細かい部分で解らないことは質問すればいい、誰かが答えてくれるだろう
1そうだね
プレイ済み
返信[7]
親投稿
say sayer.exe
実際に計算してみればわかりますよ x=(x+1) mod 399 の場合 1→2→3→4...396→397→398→0→1→2... …あれ? まあいいや、 x=x+1 の場合 1→2→3→4...396→397→398→399→400→401... こうなります ちょっと間違ってたけど、まあ笑って許してください
1そうだね
プレイ済み
返信[8]
親投稿
say sayer.exe
ところで、変数がどのように変化するのかを把握できると、コードが読めるようになりますよ 全く理解できないTERAさんのコードで考えてみましょう (1,5)の位置に、BGが置かれたとします  '置かれたんだよ! で、x=0:y=10の位置に動きます     '動いたんだよ! で、ずっと右ボタンを押しっぱなしにするとします  'そういうことにして! こういう感じの若干強引な前提条件を設けて、変数の動きを制限したり、条件を限定したりすると、かなり読めるようになります 続く
1そうだね
プレイ済み
返信[9]
親投稿
say sayer.exe
前記の条件を満たしているものとして読んでみます 「右に動く」(bt==#right)ということなので、 (bt and #right) が成立してない12,16,18行目は無効になります。無視します ここまでは、「そういうこと」として無理やり納得してください 14行目の&&に続く条件を見てみます !bgget(0,(x+17)/16, y /16) && !bgget(0,(x+17)/16,(y+16)/16) 字下げできてなかったらゴメンしてねだけど、式の法則性を理解できたら幸いです 続く
1そうだね
プレイ済み
返信[10]
親投稿
say sayer.exe
あちゃ 失敗>< まあ、、何をしてるのかを要約すると、   右上端、右下端のBGが0でないかを見ている と言うことなんです 前述の強引な条件を満たせば   右に動いた&&右上が0でない&&右下が0でない ならば 右に動く と読むことは可能なはずです で、読めたら、あとは応用ですよ
1そうだね
プレイ済み
返信[11]
親投稿
***** papurikaEX
        厳しい!!!
1そうだね
プレイ済み
返信[12]
親投稿
RPGで見かける「マス単位しか歩けない」場合はずいぶん楽になるんだけどねぇ(四隅判定が不要)
0そうだね
プレイ済み
返信[13]
親投稿
そういや何のためにBGGET()使うんだろう。 アクションゲームとRPGでは全く違ってくるからね
1そうだね
プレイ済み
返信[14]
親投稿
shoum shoum0403
あまさとしおんさん>> アクションゲームの地面判定でつかおうかとおもったのですが、これはまた違うのですか?
1そうだね
プレイ済み
返信[15]
親投稿
shoum shoum0403
ZEXさん>>はい。まさにあなたがおっしゃる通りです。基礎が欠けているのと、努力が欠けてる両方だとおもいます。
0そうだね
プレイ済み
返信[16]
親投稿
shoum shoum0403
Sayさん>> 細かい説明まで、ありがとうございます。なんとなく分かりました。
0そうだね
プレイ済み
返信[17]
親投稿
shoum shoum0403
つららさん>>わかるところは、一応あるので、わかるところとわからないところを分けて、わからないところはなぜわからないのか?とやっていくと、次第にもっとプログラムが組めると思うので、そういう感じでやっていきます
0そうだね
プレイ済み
返信[18]
親投稿
shoum shoum0403
papurikaexさん>> 私もです。
0そうだね
プレイ済み
返信[19]
親投稿
短いサンプルとかを教えてもらった時は、1行1行翻訳するような感じで意味を考えてみるといいかも。分からない命令はヘルプ「?」で調べつつ、それでも分からない場合は追加で質問してみるとかして。 分かってくると楽しくなると思いますし、今は厳しいと思いますが頑張ってください!
1そうだね
プレイ済み
返信[20]
親投稿
アクションならドット単位で動くだろうか、皆さんのソース通り四隅判定だよね
0そうだね
プレイ済み
返信[21]
親投稿
shoum shoum0403
あまさとしおんさん>> では、普通アクションゲームではどのようにして、地面またはブロックなどの判定をしているのですか?
0そうだね
プレイ済み
返信[22]
親投稿
んにゃ!? アクションゲームなら皆さんのコメント通りの方法でいいんだけど…
0そうだね
プレイ済み
返信[23]
親投稿
というか「普通の方法」なんてないよ。予想通りに動けばお好きにどうぞって感じ。
2そうだね
プレイ済み
返信[24]
親投稿
「アクションならドット単位で動くだろうか"ら"、皆さんのソース通り四隅判定だよね」 1文字抜けてたのを訂正し忘れてた。失敬。
0そうだね
プレイ済み
返信[25]
親投稿
shoum shoum0403
では、BGGETで組めばいいのですか?
1そうだね
プレイ済み
返信[26]
親投稿
うんBGGET()が良い方法だよね。 BGの並びを配列に記録しといてそれを使う…なんていうのは配列を作るだけもったいないからね。
0そうだね
プレイ済み
返信[27]
親投稿
TERA(LL) tera0413
しおんさんの言ってる、RPGで見かけるの方の方法。 懲りずに、ソースのみでコメント
1そうだね
プレイ済み
返信[28]
親投稿
BGのと当たり判定なら普通はBGGETを使います。ただBGGETは1回で1箇所しか調べられないので、何回(何カ所)調べる必要があるかはゲーム内容などによって変わってきます。 アクションなどのドットで動くゲームの場合は、動く方向やキャラの大きさにもよりますが複数箇所になるのが普通です。 RPGなどで1ブロック単位で移動する(初期のドラクエなど)場合は、ちょうどBG1つが移動単位になるので、方向に合わせたBGGET1回で済むはずです。 という感じで、調べ方は多少異なりますが、基本はBGGETで調べて移動出来れば移動する(もしくは補正する)のパターンなので、色々と試してみるといいと思いますよ。
1そうだね
プレイ済み
返信[29]
親投稿
shoum shoum0403
たくさんのアドバイス、指摘ありがとうございます。おかげさまで、なんとか使えるようになりました。これにてトピックを締め切らせてもらいます。 本当にありがとうございました。
1そうだね
プレイ済み