Есть ли способ получить определенные свойства UIImageView? - PullRequest
0 голосов
/ 19 декабря 2010

Я только начал возиться с xCode, и пытаюсь дать себе базовое представление о нем, подправив некоторые готовые проекты.

В настоящее время есть проект, над которым я работаю, у которого просто мячпрыгающий по экрану, и есть 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 без необходимости настройки констант.Надеюсь, что это возможно, просто пытаясь выяснить, для любопытства.Еще раз спасибо, ребята!

1 Ответ

0 голосов
/ 19 декабря 2010

Простой ответ - включить смещение радиуса шара (в пикселях), например:

 - (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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...