Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/113.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 碰撞时反向_Ios_Objective C - Fatal编程技术网

Ios 碰撞时反向

Ios 碰撞时反向,ios,objective-c,Ios,Objective C,我正在读一本xCode的书,试图学习如何为iOS编程。遇到了问题。。在我的应用程序中,除了划桨碰撞之外,我几乎所有的东西都在工作。我做了一个简单的针球游戏,当球碰到障碍物时,障碍物会破裂,球会落下,我遇到的问题是,当球落下时,它无法识别碰撞,直接穿过球拍 问题是checkCollisionWithBlocks 不确定当球击中时,我将如何改变球的方向,使其不通过挡板: -(void)checkCollisionWithScreenEdges{ if(ballRect.origin.x &l

我正在读一本xCode的书,试图学习如何为iOS编程。遇到了问题。。在我的应用程序中,除了划桨碰撞之外,我几乎所有的东西都在工作。我做了一个简单的针球游戏,当球碰到障碍物时,障碍物会破裂,球会落下,我遇到的问题是,当球落下时,它无法识别碰撞,直接穿过球拍

问题是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);
    }

}
-(无效)检查与屏幕的冲突{
if(ballRect.origin.x=视图宽度-球大小){
ballVelocity.x=-1*abs(ballVelocity.x);
}
if(ballRect.origin.y=视图高度-球大小){
ballRect.origin.x=180.0;
ballcrect.origin.y=220.0;
球速y=-1*abs(球速y);
}
}
-(无效)检查与块的冲突{
用于(mmBlockView*块中的块视图){
if(CGRectIntersectsRect(blockView.frame,ballRect)){
ballVelocity.y=-ballVelocity.y;
[块移除对象:块视图];
[blockView从SuperView移除];
打破
}
}
}
-(无效)检查与拨杆的碰撞{
if(ballRect.origin.x=视图宽度-球大小){
ballVelocity.x=-1*abs(ballVelocity.x);
}
if(ballRect.origin.y=视图高度-球大小){
ballRect.origin.x=180.0;
ballcrect.origin.y=220.0;
球速y=-1*abs(球速y);
}
}

CheckCollisionWithPable
并不是检查球拍是否与球拍发生碰撞,而是检查球是否离开屏幕

要检查它是否与桨叶相撞,您可以执行以下操作:

if(CGRectIntersectsRect(paddleView.frame, ballRect))
如果有帮助的话,你可能会认为划桨就像一个木块,只是它可以移动(当你击中它时,它不会消失:-)