LINUX.ORG.RU

Bullet applyCentralForce

 


0

1

В PhysX были 2 разных метода для приложения к телу силы, это AddGlobalForce и AddLocalForce(этот мне и нужен), а в Bullet подобного разделения найти не удалось, там есть только пара методов applyForce и applyCentralForce, но разделения на глобальные и локальные координаты нет. То есть, подобный код:

body1->forceActivationState(1);
body1->applyCentralForce(btVector3(0,70,0));
тело конечно будет двигать вверх, но только вверх, независимо, повернулось ли тело в сторону и т.п. все равно вверх (глобально). Мне же нужно применять силу локально, так вот не пойму, как это сделать в Bullet?


Решение:

body1->forceActivationState(1);
    btVector3 force = btVector3(0,60,0);
    btMatrix3x3& bRot = body1->getWorldTransform().getBasis();
    btVector3 localForce = bRot * force;
    body1->applyCentralForce(localForce);

makeB
() автор топика
Ответ на: комментарий от pekmop1024

Зато без костылей.

Ой, да ладно «костыль»... Дописанный метод не думаю что больно-то отличается от PhysX-ового.

makeB
() автор топика
Ответ на: комментарий от makeB

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

pekmop1024 ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.