Переместить тело в определенную позицию - Box2D

Используйте apache commons cli , если вы планируете продлить прошлое одного аргумента.

«Библиотека CLI Apache Commons предоставляет API для анализа параметров командной строки, переданных программам .

Commons CLI поддерживает различные типы опций:

  • Параметры, подобные POSIX (т. Е. tar -zxvf foo.tar.gz)
  • GNU как длинные параметры (т. е. du --human-readable --max-depth = 1)
  • Java-подобные свойства (т.е. java -Djava.awt.headless = true -Djava.net.useSystemProxies = true Foo)
  • Короткие опции со значением (gcc -O2 foo.c)
  • long options с одним дефеном (т. е. ant-project)

23
задан Anubhav Sharma 29 May 2011 в 20:00
поделиться

1 ответ

Самый простой способ - использовать SetPosition / SetTransform(position,angle). Например:

body->SetTransform(b2Vec2(0,0),body->GetAngle())

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

Учитывая, что вы не хотите использовать SetPosition (что эквивалентно приведенному выше коду), тогда ApplyLinearImpulse с соответствующей силой (основанной на массе и текущей скорости тела) сделает свое дело, и является более правильным с точки зрения моделирования, но, вероятно, будет более проблематичным, учитывая потенциальные побочные эффекты и т. д.

Как бы то ни было, iforce2d покрывал SetLinearVelocity ... и я бы добавил, что мышиный сустав очень полезен, даже когда «мышь» не задействована.

48
ответ дан Hans Olsson 29 May 2011 в 20:00
поделиться
Другие вопросы по тегам:

Похожие вопросы: