2010-12-19 84 views
0

我刚开始搞xCode,试图通过调整一些预制项目给自己一个基本的介绍。有某种方法可以获得某些UIImageView属性吗?

目前存在的是,我对工作有一个球正好在屏幕上弹跳的项目,并有一个gameLoop是设置有以下几点:

这部分中的.m定义:

- (void)gameLoop { 
    if (gameState = kGameStateRunning) { 
     ball.center = CGPointMake(ball.center.x + ballVelocity.x, ball.center.y + ballVelocity.y); 
     if(ball.center.x > self.view.bounds.size.width || ball.center.x < 0) { 
      ballVelocity.x = -ballVelocity.x; 
     } 

     if(ball.center.y > self.view.bounds.size.height || ball.center.y < 0) { 
      ballVelocity.y = -ballVelocity.y; 
     } 
    } 
    else { 
     if(tapToBegin.hidden) { 
      tapToBegin.hidden = NO; 
     } 
    } 
} 

我想知道的是,如果我的UIImageView *球从墙上弹开,如果它到达中心,有没有办法使它一旦撞到球的边缘,它反弹。

第一次在这里的海报,所以我希望我足够描述。

编辑:我也想尝试这样做,以便我应该改变UIImageView的半径而不必调整常量。希望这是可能的,只是试图找出纯粹的好奇心。再次感谢你们!

回答

0

简单的答案是,包括对球的半径的偏移量(以像素为单位),像这样:

- (void)gameLoop { 
    ball.center = CGPointMake(ball.center.x + ballVelocity.x, ball.center.y + ballVelocity.y); 
    int radius = 10; // radius in pixels 
    if (gameState = kGameStateRunning) { 
     if(ball.center.x + radius > self.view.bounds.size.width || ball.center.x - radius < 0) { 
      ballVelocity.x = -ballVelocity.x; 
     } 
     if(ball.center.y + radius > self.view.bounds.size.height || ball.center.y - radius < 0) { 
      ballVelocity.y = -ballVelocity.y; 
     } 
    } 
    ... 

有很多的教程上的冲突,并在诸如网页更先进的物理学: NeHe Productions

希望这会有所帮助。

编辑:在回答你的有关动态半径尺寸编辑,尝试像(未经测试):

UIImageView *ball; 
CGFloat radius = ball.frame.size.width; // alternatively ball.frame.size.height 
相关问题