2011-02-18 81 views
0

我想知道为什么我的代码不工作。我希望我的球(UIImageView)从块(也是UIImageView)反弹。我的球将x和y的运动切换为负值而不是一个。哪里不对???请帮助...这是我的代码如何检测UIImageView碰撞

-(void)animateBall:(NSTimer *)theTimer { 

    collisionCount ++; 
    bouncyBall.center = CGPointMake(bouncyBall.center.x + ballMovement.x, bouncyBall.center.y + ballMovement.y); 

    if (CGRectIntersectsRect(bouncyBall.frame, wallOne.frame)) { 
     if (collisionCount >= 5) { 
      [self processCollision:wallOne]; 
      collisionCount = 0; 
     } 
    } 

    if (bouncyBall.center.x > 313 || bouncyBall.center.x < 8) { 
     ballMovement.x = -ballMovement.x; 
    } 
    if (bouncyBall.center.y > 453 || bouncyBall.center.y < 8) { 
     ballMovement.y = -ballMovement.y; 
    } 
} 

-(void)processCollision:(UIImageView *)wall { 

    if (ballMovement.x > 0 && wall.frame.origin.x - bouncyBall.center.x <= 4) { 
     ballMovement.x = -ballMovement.x; 
    } 
    else if (ballMovement.x < 0 && bouncyBall.center.x - (wall.frame.origin.x + wall.frame.size.width) <= 4) { 
     ballMovement.x = -ballMovement.x; 
    } 

    if (ballMovement.y > 0 && wall.frame.origin.y - bouncyBall.center.y <= 4) { 
     ballMovement.y = -ballMovement.y; 
    } 
    else if (ballMovement.y < 0 && bouncyBall.center.y - (wall.frame.origin.y + wall.frame.size.height) <= 4) { 
     ballMovement.y = -ballMovement.y; 
    } 
} 

回答

0

即使当球撞到边缘的中心时,它会发生吗?无论如何,你不需要一次处理一个维度吗?第三个if不能是else if