Обнаружение столкновения между двумя прямоугольниками - PullRequest
0 голосов
/ 26 ноября 2010


Довольно простой вопрос, над которым, я уверен, вы будете смеяться надо мной.
У меня есть два прямоугольника playerRect и wall.
У меня есть оператор if с условием ..

if (CGRectIntersectsRect(playerRect,wall)) {
      //handle collision here
}

Проблема, с которой я сталкиваюсь, заключается в том, чтобы выяснить, какая сторона на самом деле ударяет по прямоугольнику стены.
Мне нужно знать, потому что тогда я останавливаю движение игрока в зависимости от того, какая сторона ударила.* Дискотека

Ответы [ 2 ]

0 голосов
/ 26 ноября 2010

Создайте CGRect для каждой стороны вашего объекта шириной всего 1 (или высотой 1 в зависимости от стороны) и ищите пересечения со сторонами вместо всего объекта.Если ваш объект движется быстрее, чем 1 пиксель за проверку столкновения, то вы должны проверить стороны в дополнение к проверке всего объекта

0 голосов
/ 26 ноября 2010

Я бы добавил свойство direction к моему объекту Player.Таким образом, когда вы обнаруживаете столкновение, вы просто проверяете, в каком направлении двигался игрок до столкновения, и реагируете соответственно.

...