Получение полного значения импульса для столкновения --chipmunk spacemanager cocos2d - PullRequest
0 голосов
/ 25 мая 2011

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

if(!cpArbiterIsFirstContact(arb)) return;

cpFloat impulse = cpvlength (cpArbiterTotalImpulse (arb));

float volume = MIN (impulse / 500.0f, 1.0f);NSLog (@ "impulse is:% f", объем);

NSLog (@ "impulse x:% fy:% f", cpArbiterTotalImpulse (arb) .x, cpArbiterTotalImpulse (arb) .y);if (volume> 0.05f) {[SimpleSound playSoundWithVolume: volume];}

У меня есть это в моем методе POSTSOLVE. Я попробовал это в BEGIN, и все, что он печатает, - 0. Я прошел этот сайт и обнаружил, что мне нужно это сделать.smgr.space- >asticIterations = smgr.space-> iterations;

даже после выполнения вышеизложенного, иногда я получаю 1, а иногда - «nan».Есть что-то основное, что мне нужно знать?

Спасибо

1 Ответ

0 голосов
/ 27 мая 2011

Из документации для cpArbiterTotalImpulse ():

Возвращает импульс, который был применен этот шаг для разрешения столкновения. Эти функции должны вызываться только из обратного вызова postSolve (), в противном случае результат не определен.

Примечание: если вы используют устаревший эластик установка итераций на вашем пространстве, это заставит вас ошибиться Результаты. Упругих итераций не должно быть больше не нужно, и вы должны быть в состоянии безопасно отключить их.

...