>>80
ブロックは奇数行・列に配置させてるので単純に、if(マス目%2 != 0)みたいな感じでやってます。
自分がやってる方法はいつもこんな感じです。
public int x, y; // プレイヤーの左上の点
private static final int S = 32; // プレイヤーの縦と横のサイズ
/**
* 判定点を返す。
* @return プレイヤーの判定点の座標
*/
private Point getPoint() {
return new Point(x+S/2, y+S/2);
}
移動の際int directionに方角を代入しているので後は
・動けるか否かのbooleanを返すメソッド if(direction==RIGHT && (getPoint.y)/S%2 != 0) (右へ移動するとき、奇数行であれば動けないの意味でfalseを返すみたいな。)
・修正が必要な領域に入ったか否かのbooleanを返すメソッド
・修正するメソッド
みたいな感じに細かく定義していってます。
ただ、if(マス目%2 != 0)のように定義しちゃうと、
プレイヤー:□、 ブロック:■とする
□
↓
■ ■
のように、少し左によった状態だけど判定的にはokなとき
■□ ■
のようになって、ここで右側にいけない(右の壁まで数ピクセル進めない)のって気持ち悪いと思うのです
こういう時だけ場合分けするにしても煩雑になってきますし、そもそもの当たり判定の方法がよくないのかなと思いまして質問しました。
Javaで作るスタンドアローンゲーム
■ このスレッドは過去ログ倉庫に格納されています
2013/01/17(木) 22:57:41.07ID:3HVRASXD
■ このスレッドは過去ログ倉庫に格納されています
