プレイ日記
前の投稿で教えてもらったBGとスプライトの当たり判定のことですが、 当たり判定を作ることはできるのです。 しかしBGを壁みたいにして通れなくしたいのですがこのようにプログラムを打つと、なにかおかしくなって上手く出来ません、 どなたか教えてください。
0そうだね
プレイ済み
返信[1]
親投稿
ほしけん Hosiken
今のプログラムでは、座標を足してから戻そうとしてますが、XとYを1ずつ引いても、左か上に動きながら壁に当たるとうまくいきません。 本当は今のように壁にめり込んだ分を計算して戻すのが理想ですが、 長いプログラムになりそうなので、 動くのが今の早さ程度だったら次のやりかたの方が簡単に済みます。 座標を足す前に BGGET(1,X+SX,Y+SY)==832 と判定して、 壁に当たる場合は動かさない、とすると、自然な動きになりそうです。 また、スプライトの大きさは16x16あるので、今だと左上の一点しか当たり判定がありません。左上・右上・左下・右下の4点を取らないと、うまくいってないように見えると思います。
0そうだね
プレイ済み
返信[2]
親投稿
ありがとうございます!
0そうだね
プレイ済み
返信[3]
親投稿
すいません わかったつもりでいたんですが、命令加える所ってここじゃないですか?
0そうだね
プレイ済み
返信[4]
親投稿
画像忘れました
0そうだね
プレイ済み
返信[5]
親投稿
ほしけん Hosiken
場所的にはあってますが、BGGET(1,X+SX,Y+SY)==832 がIF~THENで囲まれなくなったのはなぜでしょう? これだけとエラーになっちゃいますよね。書きかけなだけだったらすいません。 56~57行目の X=X+SX:Y=Y+SY を消します BGGET(1,X+SX,Y+SY) が 832 「ではない」ときだけ、X=X+SX:Y=Y+SY が足されるようにします。これには == ではなくて != を使います
1そうだね
プレイ済み