Изменить положение тела столкновения в проекте Bullet Physics Hello World

У меня есть глупая и раздражающая проблема в моем приложении. Я использую физику пуль и начал с примера hello world на вики: http://bulletphysics.org/mediawiki-1.5.8/index.php/Hello_World

Есть что-то вроде этого:

btDefaultMotionState* fallMotionState =
            new btDefaultMotionState(btTransform(btQuaternion(0,0,0,1),btVector3(0,50,0)));

То, что описывается как установка объекта на 50 м выше чего-либо. Так что я могу изменить высоту, но не более того. Я не могу сдвинуть его влево, вправо - что угодно. Также, когда я устанавливаю 0 везде (я имею в виду в btVector3), объект подпрыгивает, а не падает, или лучше оставаться на месте.

Может ли кто-нибудь помочь мне с этим?

Также есть ли какие-либо материалы, кроме тех, что на странице маркеров, где есть какие-то учебные пособия или что-то в этом роде?


person sebap123    schedule 06.01.2012    source источник
comment
К сожалению, для Bullet не так много руководств. Во-вторых, размещение объекта в (0,0,0) помещает его внутри земли, поэтому его поведение будет странным, помните, что вы не ставите точку. Попробуйте поместить его в (0,1,0), для начала?   -  person Sam DeHaan    schedule 07.01.2012
comment
@SamDeHaan Я могу установить высоту. Но я не могу установить ось x или z. Кстати теперь работает с высотой - не двигается.   -  person sebap123    schedule 07.01.2012
comment
Что вы изменили по сравнению с базовым примером? Сам пример выводит только значение высоты (y) в своем цикле, так что вы, по крайней мере, изменили это. Тот факт, что вы используете тег opengl, подразумевает, что вы тоже пытаетесь визуализировать?   -  person Sam DeHaan    schedule 07.01.2012
comment
Обязательно задайте этот вопрос на gamedev.stackexchange.com.   -  person    schedule 07.01.2012
comment
@SamDeHaan теперь я использую положение твердого тела для позиционирования мяча в opengl. Но я не думаю, что opengl что-то меняет, кроме визуализации. Так что, возможно, я спрошу другими словами. Как заставить это тело двигаться слева направо, а не сверху вниз?   -  person sebap123    schedule 07.01.2012
comment
Если вы хотите, чтобы он просто двигался влево или вправо, вам нужно придать ему инерцию в одном из этих направлений. Если вы хотите поместить его слева или справа, вы должны просто изменить этот btVector3. Если это не сработает, значит, вы изменили что-то еще в своем коде.   -  person Sam DeHaan    schedule 07.01.2012


Ответы (1)


Я обнаружил, что можно изменить положение. Я этого не видел.

И причина, по которой он прыгает на 0, заключается в том, что он находится «внутри» другого объекта, и тогда весь движок начинает вести себя как сумасшедший. Так что не помещайте один объект в другой.

person sebap123    schedule 17.07.2012