2010-12-19 6 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 *ボールが中央に届くと壁から跳ね返るのではなく、一度それがボールの端に当たったらそれは跳ねます。

初めての投稿ですので、私は十分に説明できたと思います。

EDIT:定数を調整することなく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

これは少し役に立ちます。

EDIT:動半径の大きさについてのあなたの編集に対応して、(未テスト)のようなものを試してください:

UIImageView *ball; 
CGFloat radius = ball.frame.size.width; // alternatively ball.frame.size.height 
関連する問題