0

iOS 向けのプログラミング方法を学ぼうとして、xCode の本を読んでいます。問題が発生しました..アプリのパドル衝突以外のほとんどすべてが機能しました。私は簡単なピンボールゲームを作りました.ボールがブロックに当たるとブロックが壊れてボールが戻ってきます.

問題はcheckCollisionWithBlocksです

パドルを通過しないように、ボールが当たったときにボールの方向をどのように変更するか正確にはわかりません。

-(void)checkCollisionWithScreenEdges{
    if(ballRect.origin.x <= 0){
        ballVelocity.x = abs(ballVelocity.x);
    }
    if(ballRect.origin.x >= VIEW_WIDTH - BALL_SIZE){
        ballVelocity.x = -1 * abs(ballVelocity.x);
    }
    if(ballRect.origin.y <= 0){
        ballVelocity.y = abs(ballVelocity.y);
    }
    if(ballRect.origin.y >= VIEW_HEIGHT - BALL_SIZE){
        ballRect.origin.x = 180.0;
        ballRect.origin.y = 220.0;
        ballVelocity.y = -1*abs(ballVelocity.y);
    }
}

-(void)checkCollisionWithBlocks{
    for(mmBlockView* blockView in blocks){
        if(CGRectIntersectsRect(blockView.frame,ballRect)){
            ballVelocity.y = -ballVelocity.y;
            [blocks removeObject:blockView];
            [blockView removeFromSuperview];
            break;
        }
    }
}

-(void)checkCollisionWithPaddle{
    if(ballRect.origin.x <= 0){
        ballVelocity.x = abs(ballVelocity.x);
    }
    if(ballRect.origin.x >= VIEW_WIDTH - BALL_SIZE){
        ballVelocity.x = -1 * abs(ballVelocity.x);
    }
    if(ballRect.origin.y <= 0){
        ballVelocity.y = abs(ballVelocity.y);
    }
    if(ballRect.origin.y >= VIEW_HEIGHT - BALL_SIZE){
        ballRect.origin.x = 180.0;
        ballRect.origin.y = 220.0;
        ballVelocity.y = -1*abs(ballVelocity.y);
    }

}
4

1 に答える 1