碰撞时反向

时间:2013-06-05 00:53:45

标签: ios objective-c

正在阅读一本试图学习如何为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);
    }

}

1 个答案:

答案 0 :(得分:0)

checkCollisionWithPaddle不是,尽管有名字,检查与桨的碰撞,它正在检查球是否离开了屏幕。

要检查它是否与拨片碰撞,您可能会执行以下操作:

if(CGRectIntersectsRect(paddleView.frame, ballRect))

如果它有帮助,你可能会认为划水板就像一个挡块,除了它可以移动(当它击中它时不会消失: - )