BulletPhysics (ammo.js) - Как бы вы применили силу к объекту?

Уточнить - ammo.js порт Bullet Physics, использующий mscripten

У меня есть персонаж (по сути, блок), который нужно толкать с силой. Я попробовал (я думаю) все методы для сил, но я все еще не могу переместить блок.

setVelocity(1,0,0) даже не двигает блок - он просто останавливает гравитацию!applyImpulse([0,0,200000],[0,0,0]) абсолютно ничего не делает.
applyForce([0,0,200000],[0,0,0]) абсолютно ничего не делает.

1 ответ

Решение

В связи с тем, что ammo.js является портом emscripten, вы должны использовать его родные типы данных для связи с ним...

Поэтому для установки скорости вам понадобится body.setLinearVelocity(new Ammo.btVector3(1,0,0));

То же самое касается applyForce и applyImpulse.

В моем коде я обычно делаю набор временных btVector3s и использую их по всему файлу, чтобы уменьшить накладные расходы на распределение и сборку мусора.

var tbv30 = new Ammo.btVector3();

function setBodyVelocity(body,x,y,z){
    tbv30.setValue(x,y,z);
    body.setLinearVelocity(tbv30);
}

удачи:D

Другие вопросы по тегам