それは、ゲーム製作で1番の難敵かもしれない(自分)
交差判定には色々ある。
矩形同士、円形同士、点と線など色々。
今回は、そんな数ある中で選ばれた矩形同士の交差判定を使って、
ボールと板の衝突を演出する。
矩形同士の交差を図に表すと
Androidには、Rectと言うメソッドが存在する。
if(ごちゃごちゃごちゃりんこ<ごちゃお||ごちゃみ>ごちゃりんこ&&・・・・){
反発するぞ!!
}
など使わなくてもこのRectメソッドを使えば、いとも簡単に反発してくれる。
そもそも、JavaにはRectangleなる物があり、このRectangleを使用して
矩形同士の交差を判定するのだが、
Androidには、RectangleではなくRectとなっており、
使い方はJavaの時と同じ用に使えばいい。
大まかな流れ
boolean型のメソッドを作る
↓
交差した時の処理を作る
↓
呼び出す
流れが出来た所で作り方の一例
今回使用するのは、ボールと板なので、取り合えず、板を設定しているクラスファイルに
boolean型のメソッドを作る。
public boolean collideWidth(Ball ball) {
}
そして、ブロックの中身は
まず板の矩形
Rect rect_boar=new Rect()
引数の中身は、Androidで矩形を描画する時の引数と同じで
一応
int left,int top,int right,int bottom
次に、ボールの位置座標を取得
この時、ボールを設定しているクラスファイルでgetterを作っておく
Point ball_Pos=ball.getPos();
そして、ボールの矩形
Rect rect_ball=new Rect()
引数の中身は、Androidで矩形を描画する時の引数と同じで
一応
int left,int top,int right,int bottom
最後、boolean型なので、返さないといけない
この場合、返す条件は板とボールが交差したらtrueを返すというふうにしなくてはいけない。
交差のメソッドを呼び出す
interset()と言うものがあり、これを使う。
return rect_board.intersect(rect_ball);
そして、ここは、終了。
次に、メインのクラスファイルで、交差したらどうするかのメソッドを作る。
public void collisionDetection() {
}
ブロックの中身は
if(board.collideWidth(ball)) {
このブロックの中に、交差したら、
どうするかの内容を記述する。
}
最後、run() メソッドで
collisionDetection()
を呼べば、反発してくれる。
参考
android reference:Rect
その他のブロック崩し関連
0 件のコメント:
コメントを投稿