//ボールがブロックに衝突しているかをチェックする public void ballCollisionCheck(ref Ball ball) { bool collisionFlag = false; //trueならブロックとボールは衝突している if (NatureObject.OBJ_BLOCK == this.natureObject) { //ボールの座標がブロックの矩形に重なっていないかをチェックする //ボールのX座標がオブジェクトの矩形より大きく、ボールのX座標が矩形のX座標の幅よりも小さい場合、 //または矩形のX座標がボールのX座標よりも大きく、かつ、矩形のX座標よりもボールのX座標がボールの横幅よりも大きい場合、 //かつ、ボールのY座標が矩形のY座標よりも大きく、ボールのY座標が矩形のY座標の高さよりも大きい場合、 //または矩形のY座標がボールのY座標よりも大きく、さらに矩形のY座標よりもボールのY座標がボールの縦幅よりも大きい場合、 if (((ball.getX() > this.x) && (ball.getX() < (this.x + MapObject.mapObjectWidth)) || (this.x > ball.getX()) && (this.x < (ball.getX() + ball.getBallWidth()))) && ((ball.getY() > this.y) && (ball.getY() < (this.y + MapObject.mapObjectHeight)) || (this.y > ball.getY()) && (this.y < (ball.getY() + ball.getBallHeight())))) { //ブロックの矩形と座標が重なっていたら、ボールを反射させる double angle = ball.getAngle(); ball.setAngle(-angle); collisionFlag = true; } //ブロックを消去する if (collisionFlag == true) { natureObject = NatureObject.OBJ_SPACE; } } return; }
//ボールがスティックに衝突しているかをチェックする public void ballCollisionCheck(ref Ball ball) { //ボールの座標がスティックの矩形に重なっていないかをチェックする //ボールのX座標がオブジェクトの矩形より大きく、ボールのX座標が矩形のX座標の幅よりも小さい場合、 //または矩形のX座標がボールのX座標よりも大きく、かつ、矩形のX座標よりもボールのX座標がボールの横幅よりも大きい場合、 //かつ、ボールのY座標が矩形のY座標よりも大きく、ボールのY座標が矩形のY座標の高さよりも大きい場合、 //または矩形のY座標がボールのY座標よりも大きく、さらに矩形のY座標よりもボールのY座標がボールの縦幅よりも大きい場合、 if (((ball.getX() > this.x) && (ball.getX() < (this.x + Stick.stickWidth)) || (this.x > ball.getX()) && (this.x < (ball.getX() + ball.getBallWidth()))) && ((ball.getY() > this.y) && (ball.getY() < (this.y + Stick.stickHeight)) || (this.y > ball.getY()) && (this.y < (ball.getY() + ball.getBallHeight())))) { //スティックの矩形と座標が重なっていたら、ボールを反射させる double angle = ball.getAngle(); if (DX.GetRand(10) > 5) { angle -= DX.GetRand(10); } else { angle += DX.GetRand(10); } ball.setAngle(-angle); } return; }