投稿
abebetaro abebetaro
BGと動かすキャラの当たり判定をやっているのですが、これを実行すると配置したブロックにキャラが埋まって動けなくなってしまいます。 ブロックの配置はDATAに0と1の文字列を配列に入れて数値に変換し、0なら何も配置しない、1ならブロック配置となっていて配置自体はうまくいっています。 キャラの座標は16で割って判定できるようにしています。 このコードだと0のところは移動出来て、そうでないところは移動不可になるので固まってしまうのです。 何かいい方法はないでしょうか? お願いいたします。。
1そうだね
プレイ済み
返信[1]
親投稿
ねこはち neko80001
自分の座標ではなく、自分の移動先の座標の当たり判定を調べるようにしましょう
1そうだね
プレイ済み
返信[2]
親投稿
ねこはちさんのいうように移動させる前に移動先をチェックして移動出来ない場合は移動させないようにしましょう。 あとIFのENDIFは1行の場合は書く必要はないので、67,68,70,72,73などは不要ですよ。 あとFLOORを使っているのは少数を消すためだと思いますが、そういう場合に便利な命令にDIVというのがあって、これだと割り算の整数部だけ求められるので、BCX=CX DIV 16と書く方法がありますよ。余談でしたが…。
2そうだね
プレイ済み
返信[3]
親投稿
ねこはち neko80001
具体的に言えば、このプログラムだと、自分の座標のBGデータが1の場合はキー入力を受け付けていないので動かないのです ループ内に、自分の左右のBG状態を予め調べた変数を用意して、キー入力+移動先の障害物の有無でIFを使えば大丈夫です
0そうだね
プレイ済み
返信[4]
親投稿
abebetaro abebetaro
でんぺんさん、ねこはちさん 丁寧に教えて頂き、ありがとうございます! 何となく理解出来たので、頑張ってみます! うまくいったら報告します!
0そうだね
プレイ済み