Перетаскивание спрайта (Cocos2D) во время симуляции Бурундука - PullRequest
0 голосов
/ 01 мая 2010

У меня есть простой проект, построенный с Cocos2D и Chipmunk. Пока это просто шар (тело, форма и спрайт), отскакивающий от земли (статический отрезок в нижней части экрана).

Я реализовал методы ccTouchesBegan / Moved / Ended, чтобы перетащить шар. Я пробовал оба:

cpBodySlew(ballBody, touchPoint, 1.0/60.0f);

и

ballBody->p = cgPointMake(touchPoint.x,touchPoint.y);

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

Кто-нибудь знает предпочтительный способ перетаскивания активного тела во время симуляции физики? Нужно ли как-то останавливать симуляцию и потом снова включать ее?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 02 мая 2010

Вы не обновляете скорость объекта, когда не используете cpBodySlew (). Вот почему он падает прямо вниз.

Лучший способ сделать это - использовать шарнирное соединение с принудительной фиксацией, как это делают официальные демоверсии, для реализации управления мышью. http://code.google.com/p/chipmunk-physics/source/browse/trunk/Demo/ChipmunkDemo.c#296

0 голосов
/ 01 мая 2010

Временно удалить тело из пространства.

Если вы хотите, чтобы объект имел инерцию при отпускании, это другая история. Самый чистый способ - прикрепить довольно жесткую пружину между шариком и временным корпусом датчика, который перемещается под контролем вашего пальца. Когда вы отпустите палец, шар сохранит любую кинематику, которую он имел, пока вы тащили его. В этом случае убедитесь, что не , чтобы убрать мяч из пространства.

...