壁の当たり判定について
Posted: 2016年3月29日(火) 06:56
現在Dxライブラリでアクションゲームを作っています。
マップを制作するにあたり、map配列にint型データを入れています。
キャラクターは四角い判定で、四隅に判定を持ち、マップと照らし合わせて衝突判定を取っています。
天井、床の当たり判定はうまくいったのですが、
壁の当たり判定がうまくいきません。
当たり判定の条件がいけないと思ったのですが、うまいこと思いつきませんでした。
ここが原因であろうというコードを載せておきます。
助言お願いします!
マップを制作するにあたり、map配列にint型データを入れています。
キャラクターは四角い判定で、四隅に判定を持ち、マップと照らし合わせて衝突判定を取っています。
天井、床の当たり判定はうまくいったのですが、
壁の当たり判定がうまくいきません。
当たり判定の条件がいけないと思ったのですが、うまいこと思いつきませんでした。
ここが原因であろうというコードを載せておきます。
助言お願いします!
/*
現在のマップ配列
static int Map_1[MAP_Y_MAX][MAP_X_MAX] =
{
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,},
{0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,},
{0,0,0,0,0,0,1,1,1,1,0,0,0,0,0,0,},
{0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,},
{0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,},
{0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,},
{1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,},
};
*/
// 左上、右上座標に触れるとき
if( map ->Map1cpy[ luy[i] ] [lux[i] ] == 1 ||
map ->Map1cpy[ ruy[i] ] [rux[i] ] == 1){
unit[i] -> y = unit[i] -> y / 64*64 + 64;
}else
// 左下、右下座標に触れるとき
if( map ->Map1cpy[ ldy[i] ] [ldx[i] ] == 1 ||
map ->Map1cpy[ rdy[i] ] [rdx[i] ] == 1){
unit[i] -> y = unit[i] -> y / 64*64 ;
// ブースト徐々に回復
if(unit[i] -> Boost <= 100){
unit[i] -> Boost += 3;
}
}else
// 左上、左下座標に触れるとき
if( map ->Map1cpy[ luy[i] ] [lux[i] ] == 1 ||
map ->Map1cpy[ ldy[i] ] [ldx[i] ] == 1){
unit[i] -> x = unit[i] -> x / 64*64 + 64;
}else
// 右上、右下座標に触れるとき
if( map ->Map1cpy[ ruy[i] ] [rux[i] ] == 1 ||
map ->Map1cpy[ rdy[i] ] [rdx[i] ] == 1){
unit[i] -> x = unit[i] -> x / 64*64;
}