【DxLib】マップの壁について
Posted: 2015年8月17日(月) 15:15
昨日連射に関するトピックを建てて、今日もまた別件でトピックを建てるのはあまり好まないのですがどうしてもわからないので教えていただきたいです
キャラクターを操作する際、壁に入らせたくないのですがその時の計算がわかりません
このように余り切り捨ての除算で行動後の座標からmap[][]の添字とマップデータを取得しているのですが、うまく反映されません
壁にめり込んでしまいます
めり込みつつも変に壁判定が生きたりしておかしなことになってます
私は普通のゲームのようにそもそも壁に入らせたくないのですがどうすればよいのでしょうか

キャラクターを操作する際、壁に入らせたくないのですがその時の計算がわかりません
//0は行動可能領域、1は壁
int map[15][20] = {
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1 },
{ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 },
};
//px、pyはプレイヤーの現在の座標位置です
int kx = px, ky = py;
if (Key[KEY_INPUT_LEFT]) {
kx -= 10;
}
if (Key[KEY_INPUT_RIGHT]) {
kx += 10;
}
if (Key[KEY_INPUT_UP]) {
ky -= 10;
}
if (Key[KEY_INPUT_DOWN]) {
ky += 10;
}
//ここからが壁判定になります
//1でないときは移動する、というコードです
if (map[ky / 32][kx / 32] != 1) {
px = kx;
py = ky;
}
壁にめり込んでしまいます
めり込みつつも変に壁判定が生きたりしておかしなことになってます
私は普通のゲームのようにそもそも壁に入らせたくないのですがどうすればよいのでしょうか
