MineMan287
MineMan287

Reputation: 55

BulletPhysics (ammo.js) - How would you go about applying force to an object?

To clarify - ammo.js is a port of Bullet Physics using mscripten

I have a character (essentially a block) that needs to be pushed with force. I have tried (I think) all of the methods for forces but I still cannot move the block.

setVelocity(1,0,0) does not even move the block - it just stops gravity from acting on it! applyImpulse([0,0,200000],[0,0,0]) does absolutely nothing.
applyForce([0,0,200000],[0,0,0]) does absolutely nothing.

Upvotes: 2

Views: 3971

Answers (1)

manthrax
manthrax

Reputation: 5016

Due to the fact that ammo.js is an emscripten port, you have to use its native datatypes to talk to it...

So for setting velocity you'd need to body.setLinearVelocity(new Ammo.btVector3(1,0,0));

Same goes for applyForce and applyImpulse.

In my code, I usually make a set of temporary btVector3s, and use them throughout the file, in order to reduce the overhead of allocation and garbage collection..

var tbv30 = new Ammo.btVector3();

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

good luck :D

Upvotes: 6

Related Questions