2010-12-19 78 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 
相關問題