sun*_*ide 15 physics bullet game-physics
使用Bullet 2.76我试图冻结一个物体(刚体),使其立即停止移动,但仍然响应碰撞.
我尝试将它的激活状态设置为DISABLE_SIMULATION,但是它几乎不存在于其他对象中.此外,如果对象在禁用时与其"碰撞",则会发生奇怪的事情(对象通过静态物体落下等)
我想,暂时将它转换为静态刚体可能会起作用,但是在Bullet的方面是否存在一种现有的"原生"方式来实现这一点?
编辑:有没有办法关闭特定对象的重力?
小智 7
只需将刚体的质量设置为0,然后它就变成静态......
http://bullet.googlecode.com/svn/trunk/Demos/HelloWorld/HelloWorld.cpp
文档有点缺乏,但可以假设下面的方法可用于禁用特定主体的重力:
void btRigidBody::setGravity(const btVector3 &acceleration)
Run Code Online (Sandbox Code Playgroud)
有功能btRigidBody叫做setLinearFactor(x,y,z)和setAngularFactor(x,y,z),让你沿着关于特定轴的特定轴和旋转分别限制运动.用all 0作为参数调用这两个函数应该停止所有动作.再次与他们一起召唤他们1将允许再次行动.
将激活状态设置为零。这就是对象自然睡眠时发生的情况。重力等直到再次被唤醒才会生效。
rigidBody->setActivationState(0);
Run Code Online (Sandbox Code Playgroud)
然后就像任何沉睡的物体一样,它会在碰撞或施加力时被唤醒。