盒子在子弹物理中不滚动

Posted

技术标签:

【中文标题】盒子在子弹物理中不滚动【英文标题】:Box doesn't roll in Bullet Physics 【发布时间】:2015-08-29 13:51:06 【问题描述】:

如图所示,The Box 不会滚动,而是会在斜坡上滑动。

这是我在代码中创建盒子的方法,

config = new btDefaultCollisionConfiguration();
dispatcher = new btCollisionDispatcher(config);
broadphase = new btDbvtBroadphase();
solver = new btSequentialImpulseConstraintSolver();
bWorld = new btDiscreteDynamicsWorld(dispatcher, broadphase, solver, config);
bWorld->setGravity(btVector3(0, -9.8f, 0));

// ...

btTransform t;
t.setIdentity();
t.setOrigin(btVector3(position.x, position.y, position.z));

btBoxShape* box = new btBoxShape(btVector3(size.x, size.y, size.z));
btVector3 inertia(0, 0, 0);
float mass = 10.f;
box->calculateLocalInertia(mass, inertia);

btMotionState* mState = new btDefaultMotionState(t);
btRigidBody::btRigidBodyConstructionInfo cInfo(mass, mState, box);
//cInfo.m_restitution = 0.4f;
//cInfo.m_friction = 0.5f;
btRigidBody* body = new btRigidBody(cInfo);
//body->setLinearFactor(btVector3(1,1,0));
//body->setAngularFactor(btVector3(0,0,1));
m_impl->bWorld->addRigidBody(body);

我尝试了摩擦力和其他参数,但结果是一样的。让我知道我在这里做错了什么。

【问题讨论】:

【参考方案1】:

您需要将inertia 向量传递给btRigidBodyConstructionInfo。 检查btRigidBodyConstructionInfo构造函数上的第四个参数(具有默认值的那个)。

【讨论】:

以上是关于盒子在子弹物理中不滚动的主要内容,如果未能解决你的问题,请参考以下文章

如何在子弹物理引擎中对身体应用旋转?

UIScrollView在iOS11中不滚动

您如何在子弹物理引擎中模拟传送带?

怎么让滚动条只显示在子盒子body不显示

div盒子存在阴影导致父级标签出现滚动条

内层盒子滚动条滑动到底部会滑动外层滚动条解决方法