CGRectIntersectsRect Вопрос - PullRequest
       7

CGRectIntersectsRect Вопрос

2 голосов
/ 29 августа 2011

Привет, я пытаюсь сделать простую игру, используя акселерометр на iphone.

Итак, у меня есть подкласс UIView, называемый врагами. и у меня есть пара таких на экране. И эти блоки расширяются и сжимаются, используя [UIView animateWithDuration: ...] снова и снова. У меня есть UIImageView, который перемещается в соответствии с данными акселерометра - это игрок.

Когда игрок вступает в контакт с вражеским блоком, игра должна сбрасываться. Я использую CGRectIntersectsRect (player.frame, врагаblock.frame), чтобы определить, произошло ли попадание. Но это ведет себя очень странно, поскольку попадание происходит только тогда, когда вражеские блоки не анимируются, в противном случае игрок может пройти прямо через них.

Есть хоть какая-то подсказка, почему это происходит?

Ответы [ 3 ]

1 голос
/ 29 августа 2011

Не совсем ответ, но я бы посоветовал использовать cocos2d , если вы пишете игру.Это потрясающий игровой движок, написанный на Objective C, который я использовал сам.Вы создаете 2D сценограф спрайтов.Затем вы пишете метод обновления, который вызывается через регулярные интервалы, например, 30 раз в секунду.В этом методе обновления вы можете обновлять позицию каждого спрайта противника и игрока постепенно и выполнять проверку столкновений, используя CGRectIntersectsRect для обнаружения столкновений.Надеюсь, это поможет.

1 голос
/ 29 августа 2011

При анимации видов - это уровень представления вида, который обновляется с помощью геометрии. информация во время анимации. В зависимости от того, как вы анимируете свой слой игрока, попробуйте

CGRectIntersectsRect(player.frame, enemyblock.layer.presentationLayer.frame)

Всего наилучшего

0 голосов
/ 29 августа 2011

CGRect не обнаруживает Во время анимации UIView и UIImageView, следовательно, « CGRectIntersectsRect (player.frame, врагаblock.frame) » не играет соответствующей роли, и вы столкнулись с чем-то странным.Я советую вам сделать пользовательскую анимацию UIView, она будет работать для вас.

...