2010-11-26 2 views
1

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

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

ответ

1

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

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

Если вы новичок в симуляции физики, вот 30 второй обыгрыш:

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

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

пользуются

-1

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

+0

Это вопрос, который следует задать в комментарии не в ответе, поскольку вы не указали никакого ответа.И он спрашивает, как справиться с столкновением. – Joel 2010-11-29 23:30:52

0

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

  1. Просто график таймер: [график самостоятельно: @selector (checkForCollision :)];

  2. Указать метод: - (недействительными) checkForCollision: (ccTime) Л {}

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

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

легко!

Смежные вопросы