投稿
BGGET命令を使ってもスプライトとBGの判定が上手くいかない…!! 誰か教えて下さい…
2そうだね
プレイ済み
返信[1]
親投稿
もし実際にやっていてうまくいかないときは、どんな感じにやってるけどうまくいかないみたいな感じで聞いた方がいいですよー。可能ならそのリストの一部画像とか公開キーを上げると尚ベストですよ。
0そうだね
プレイ済み
返信[2]
親投稿
おかっぺ Japanese_WASABI
でんぺんさんがサンプルを上げてくださっていました。探してみてください。 ※でんぺんさん、勝手に回答に使ってごめんなさい
0そうだね
プレイ済み
返信[3]
親投稿
おかっぺ Japanese_WASABI
あっ(お察し下さい)
1そうだね
プレイ済み
返信[4]
親投稿
上下左右の4方向に対しての判定がしたいので、スプライトのX座標をPX,Y座標をPYとして、BGGET(レイヤー,PX/16+1,PY/16+1)とBGGET(レイヤー,PX/16-1,PY/16-1)の2つの命令を使ったのですが、すり抜けてしまいます。
0そうだね
プレイ済み
返信[5]
親投稿
BGGETで取得するBGタイル番号はちゃんと取得出来てそうですか? PRINTで表示してみるといいと思います。 あとBG自体をスクロールさせていたとしたらそれだとうまくいかないです。スクロールしている分を計算に加える必要があります。 あとちょっと便利な命令として、BGGET(レイヤー,X, Y, 1)というやり方があります。これを使うと座標を16で割らなくても画面上の見た目からBGタイル番号が取得出来、なんとスクロールしていても見た目から取得出来ます。これは便利ですね〜。
0そうだね
プレイ済み
返信[6]
親投稿
でんぺんさん>対象のBGキャラ番号は取得しています(背景のBGを99番、判定用のBGを106番としています) 座標系フラグの番号と座標値も変えてみましたが、結果は同じでした… レイヤーとかは関係あるのでしょうか。
0そうだね
プレイ済み
返信[7]
親投稿
キャラ番号が取得出来ているならチェックの仕方がおかしいぐらいしか思いつかないですけどねー…。参考にその判定部分のプログラム画像をここに載せるか公開キーなどを出す事は出来ますか?
0そうだね
プレイ済み
返信[8]
親投稿
今3DSの方のネット通信が出来なくて載せる事が出来ないのでプログラムの一部を書きます。 実は今作っているプログラムはでんぺんさんの投稿を参考にしていて、スライドパッド入力がされたら変数U,Vを変化させるようにしています。 STICK命令を使い、 STICK OUT SX,SY IF SY>0.2 THEN V=SY IF SY<-0.2 THEN V=-SY IF SX<-0.2 THEN U=-SX IF SX>0.2 THEN U=SX としています。 'BGの判定 IF BGGETの(0,PX+16,PY+16,1)==106 THEN PX=PX-U PY=PY-V ENDIF と言う感じです。 分かりにくかったらすみません。
0そうだね
プレイ済み
返信[9]
親投稿
間違えました。BGGET命令の間に「の」が入っていました。
0そうだね
プレイ済み
返信[10]
親投稿
ちょっと確認です〜。判定部分が割るじゃなくて+だったりしてて始めの書き込みと違いますが書き間違えですか? 判定部分が重要なので間違えてると判断が出来ないのでー…。
0そうだね
プレイ済み
返信[11]
親投稿
座標系フラグを1にしたのでスプライトの座標に16を足して調整しているつもりなのですが…
0そうだね
プレイ済み
返信[12]
親投稿
ふむふむ。キャラのサイズや原点がわからないので調整があってるかわからないんですが、とりあえずそれは合ってると考えて…。 ちょっとBGと関係なしに気になったのはアナログパッドの値は小さいのでそのままだとかなり移動量が小さくなっちゃうはずですんで、それも気になりました。
0そうだね
プレイ済み
返信[13]
親投稿
あ! あと僕のサンプルの判定は歩ける場所の判定なので条件文の106は歩けない場所だとしたら、99(歩けるBG)にしないと駄目です。
0そうだね
プレイ済み
返信[14]
親投稿
スライドパッドによるIF文で変数UとVだけでなく、PXやPY、スプライトのキャラ番号も設定しています。移動量はそこまで気にしていません。BGGET命令1つだと、スプライトキャラの下と右しか判定が無いので、上と左に対応出来るようにもうひとつBGGET(0,PX-16,PY-16,1)とBGGET命令を入れてみたのですが、変わらなかったので色々考えてます。
0そうだね
プレイ済み
返信[15]
親投稿
いろいろと応用してるっぽいんで、やっぱり全体のソースが見れないと判断が難しいですねー…。 あとオマケですが、 IF SY>0.2 THEN V=SY IF SY<-0.2 THEN V=-SY IF SX<-0.2 THEN U=-SX IF SX>0.2 THEN U=SX の部分は、 IF ABS(SY) > 0.2 THEN V=-SV IF ABS(SX) > 0.2 THEN U=SX の2行で書けると思います。 てか上記のIFも間違ってそうな気も…。UもVも必ずプラスにしかならないコードになってますよ。
0そうだね
プレイ済み
返信[16]
親投稿
IF ABS(SY) > 0.2 THEN V=-SVのSVはSYの間違えです!
0そうだね
プレイ済み
返信[17]
親投稿
お正月からすみません。 やっとPCが動きました。 今のところ作ってあるものの公開キーを載せますね。 公開キー「V348YDDX」です。 確認していただけたら幸いです。
0そうだね
プレイ済み