プレイヤーの幅、障害物の幅とが、キッチリと判定してくれません。
特に、障害物が並んでいる場合だと判定がおかしくなります。
移動先の調べ方に抜けがあるのか、半ずらしでは障害物の間に入り込めたりできる場合があります。
多分、初心者にありがちなミスだと思うのですが、、、、
考え方としてなにが足りないのか、どこがおかしいのか、、。
(ソースが長いので今回「PLAYERが下方向に進んでいる時の先の障害物調べる」処理だけ
抜粋させて頂きました。
movespeedでプレイヤーの移動方向を認識し、その方向に障害物があるかを調べる処理です。
マップは二次元配列で、PLAYERの移動先のX、Yを求め、マップ[Y][X]が障害物ブロックか、調べるという感じです。
//自分の下にあるブロック
if(getPLAYERmovespeedY()>0){//下に移動中
for(int i=0; i<2+(PLAYER横幅()-2)/16; i++){//障害物の境目に当たる
//移動先の配列のYの添え字を出す
int y=(int)(PLAYERposY+PLAYER縦幅+getmovespeedY-1)/16;
int x;//配列Xの添え字を求める
if(i==0){//自分の画像の左端
x=(int)(PLAYERposX+1)/16;
}
else if(i==2+(PLAYER横幅-2)/16-1){//画像の右端
x=(int)(PLAYERposX()+PLAYER横幅()-2)/16;
}
else{//中間
x=(int)(PLAYERposX()+(i*16-2))/16;
}
//移動先のMAP配列確認
if(マップ[y][x]==障害物 ){
障害物なら、PLAYERの移動数値修正、、、
}
ご指摘頂けるとありがたいです。
16×16の障害物が単体で配置してある場合は、処理が簡単なんですが
障害物が連続して繋がって並んでいると、なにか変な動きになります。
障害物と障害物の間に一瞬入り込んだり、とかです。