//ボールがブロックに衝突しているかをチェックする
        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;
        }
Example #2
0
        //ボールがスティックに衝突しているかをチェックする
        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;
        }