BulletPhysics (ammo.js) - 你将如何对物体施加力?

Posted

技术标签:

【中文标题】BulletPhysics (ammo.js) - 你将如何对物体施加力?【英文标题】:BulletPhysics (ammo.js) - How would you go about applying force to an object? 【发布时间】:2014-12-21 18:35:07 【问题描述】:

澄清一下 - ammo.js 是使用 mscripten 的 Bullet Physics 的一个端口

我有一个需要用力推动的角色(本质上是一个方块)。我已经尝试了(我认为)所有的力量方法,但我仍然无法移动方块。

setVelocity(1,0,0) 甚至不移动方块 - 它只是阻止重力作用于它! applyImpulse([0,0,200000],[0,0,0]) 什么都不做。applyForce([0,0,200000],[0,0,0]) 什么都不做。

【问题讨论】:

为了将来参考,用`(数字1旁边的东西)包围内联代码。 【参考方案1】:

由于 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

【讨论】:

不确定我是否关注,@Funkodebat ? 好吧...假设您要做的就是重用向量..那么您需要function doSomeStuff(body, x, y, z) ... ,因此您实际上可以每次都使用自己的值而不是10,0,0。

以上是关于BulletPhysics (ammo.js) - 你将如何对物体施加力?的主要内容,如果未能解决你的问题,请参考以下文章

幽灵对象 - bulletphysics

BulletPhysics“setLinearVelocity”不动

BulletPhysics / BulletSharp 中的 CUDA?

如何让 bulletphysics/bulletsharps 的多线程工作?

Bullet Physics - 在身体的局部空间中应用扭矩脉冲

[python]pybullet安装后测试代码