Cocos2d - Создание встречных спрайтов? - PullRequest
1 голос
/ 27 ноября 2010

Привет всем, я новичок в cocos2d, поэтому я прошу прощения, если это простой вопрос.Я хотел бы создать спрайты, которые сталкиваются, когда они сталкиваются друг с другом.

Например, один спрайт, spriteA, находится в фиксированной позиции на экране.И другой спрайт, spriteB, движется по экрану.SpriteB столкнется со spriteA.Если это не имеет смысла или вы не понимаете этого, скажите мне, и я уточню подробнее.Любая помощь приветствуется.Спасибо!

Ответы [ 3 ]

1 голос
/ 30 ноября 2010

Попробуйте использовать физические системы Бурундук или Box2d.Они включены в Cocos2d и работают с симуляцией физики, которая обновляется при каждом изменении графики на экране.

Физическое моделирование скажет вам, если два объекта перекрываются, и предоставит физические атрибуты, такие как вес, скользкость (трение), скорость и направление, что создает такие реакции, как подпрыгивание, скольжение, реалистическая потеря скорости и изменениянаправление на удар.

Если вы новичок в физическом моделировании, вот 30-секундный переход вниз:

  • Создание "тел" в физическом моделировании, которые представляют каждый графический спрайт
  • Тела обычно определяются проще, чем их графические аналоги, например, круг, квадрат или простая форма многоугольника.
  • Для точного обновления графики на экране сначала необходимо установить отношение пикселей к метрам.Метры - это условное (т.е. составленное) измерение, которое используется в симе физики
  • Каждый раз, когда симуляция физики "тикает", вы соответственно обновляете графику на экране
  • Так что, если тело вфизический сим перемещается на 1 метр, вы можете преобразовать пиксельный спрайт в 32 пикселя

Вот хороший пример обнаружения столкновений с помощью Box2d.http://www.raywenderlich.com/606/how-to-use-box2d-for-just-collision-detection-with-cocos2d-iphone

наслаждайся

0 голосов
/ 13 февраля 2011

Это на самом деле очень просто:

  1. Просто запланируйте таймер: [self schedule: @selector (checkForCollision:)];

  2. Укажитеметод: - (void) checkForCollision: (ccTime) dt {}

  3. В фигурных скобках создайте CGRect для каждого спрайта с помощью CGRectMake.

  4. Затем в том же методе просто вызовите: if (CGRectIntersectsRect) {}

Это просто!

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

С технической точки зрения, когда два спрайта взаимодействуют или разделяют хотя бы одну общую точку, они сталкиваются. Я немного смущен вашим вопросом. Вы спрашиваете, как заставить спрайт двигаться на экране, или вы спрашиваете, как справиться с фактическим столкновением (например, вызвать метод, если они сталкиваются)?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...