cocos2d, box2d: игра на основе монет: гравитация на оси z, плавающая монета - PullRequest
1 голос
/ 28 ноября 2011

Сейчас я работаю над игрой, похожей на carrom, используя cocos2d + Box2d. Я установил world gravity(0,0) .., чтобы сделать гравитацию на оси Z. Это правильное или любое другое значение?

Я установил следующее значение для тела забастовщика:

  Coin body: 
         density = 20.0f;
         friction = 0.4f;
         restitution = 0.6f;
         Shape Circle with radius - 15/PTM_RATIO

  Striker body: 
         density = 25.0f;
         friction = 0.6f;
         restitution = 0.3f;
         Shape Circle with radius - 15/PTM_RATIO

Вывод не гладкий, когда я применяю ApplyLinearImpulse(force,position);

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

Какая ценность монеты и ударника делает ее похожей на настоящую карому?

1 Ответ

2 голосов
/ 28 ноября 2011

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

bodyDef.linearDamping = 0.5f;

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

...