要澄清-ammo.js是使用mscripten的Bullet Physics的移植

我有一个角色(基本上是一个方块),需要用力推动。我已经尝试过(我认为)所有使用力的方法,但是我仍然无法移动障碍物。

setVelocity(1,0,0)甚至不移动块-只是阻止重力作用在块上!
applyImpulse([0,0,200000],[0,0,0])绝对不执行任何操作。
applyForce([0,0,200000],[0,0,0])绝对不执行任何操作。

最佳答案

由于ammo.js是一个emscripten端口,因此您必须使用其本机数据类型与之通信...

因此,要设置速度,您需要body.setLinearVelocity(new Ammo.btVector3(1,0,0));

applyForce和applyImpulse也一样。

在我的代码中,我通常制作一组临时的btVector3,并在整个文件中使用它们,以减少分配和垃圾回收的开销。

var tbv30 = new Ammo.btVector3();

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


祝你好运:D

关于javascript - BulletPhysics(ammo.js)-如何对物体施加力?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26573039/

10-12 04:30