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“setLinearVelocity”不动
BulletPhysics / BulletSharp 中的 CUDA?
如何让 bulletphysics/bulletsharps 的多线程工作?