прикрепить несколько форм столкновения к одному твердому телу - PullRequest
0 голосов
/ 13 июля 2011

Я создал однопользовательскую игру, используя iOS + Cocos2d + Chipmunk, и я ищу решение, которое демонстрирует, как прикрепить несколько форм столкновения к одному твердому телу.У меня есть цель неправильной формы (машина), для которой мне нужно обнаруживать столкновения.Цель (автомобиль) видна игроку со стороны, и другие объекты могут воздействовать на цель с разных сторон, а не только с передней или задней стороны.Форма такова, что я не могу использовать один cpPolyShape и добиться реалистичного эффекта столкновения.Две cpPolyShapes (прямоугольные), накладываемые друг на друга, с нижним прямоугольником большего размера, должны помочь.

Может кто-нибудь привести пример того, как этого можно достичь?

Я читалБурундук рассказывает о cpShape, http://code.google.com/p/chipmunk-physics/wiki/cpShape, и заявляет, что «Вы можете прикрепить несколько фигур столкновений к твердому телу» в самом низу страницы в разделе заметок, но пример не приводится.

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

Ответы [ 2 ]

1 голос
/ 14 июля 2011

Когда вы вызываете cp * ShapeNew (), первым параметром является тело, к которому он присоединяется. Просто сделайте несколько фигур, которые имеют одно и то же тело. Там нет трюк.

0 голосов
/ 18 ноября 2011

Вы можете добавить метод

В файле .h добавить прототип

static int FunctionName (cpArbiter *arb, cpSpace *space, void *unused);

Теперь в .m файле добавьте код как

    cpSpaceAddCollisionHandler(<space name>, <cpCollisionType of  body a >, <cpCollisionType of body b>, <cpCollisionBeginFunc name>, <cpCollisionPreSolveFunc preSolve>, <cpCollisionPostSolveFunc postSolve>, <cpCollisionSeparateFunc separate>, <void *data>);

static int FunctionName(cpArbiter *arb, cpSpace *space, void *unused)
{
    cpShape *a, *b; cpArbiterGetShapes(arb, &a, &b);    
    printf("\n Collision Detected");    
    return 1;   
}

Примечание: - Не забудьте указать тип столкновения обоих тел.

...