Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 子弹物理盒不';t旋转_C++_Opengl_Physics_Bullet - Fatal编程技术网

C++ 子弹物理盒不';t旋转

C++ 子弹物理盒不';t旋转,c++,opengl,physics,bullet,C++,Opengl,Physics,Bullet,我正在使用下面的代码使用bullet物理引擎建立一个简单的世界。当我运行它时,长方体的行为并不真实,因为它们不旋转。就像他们的旋转被锁定了一样。以前有没有人见过这样的事情,或者知道是什么原因造成的?多谢各位 World::World() { mBroadphase = new btDbvtBroadphase(); mCollisionConfiguration = new btDefaultCollisionConfiguration(); mDispatcher = new btCollis

我正在使用下面的代码使用bullet物理引擎建立一个简单的世界。当我运行它时,长方体的行为并不真实,因为它们不旋转。就像他们的旋转被锁定了一样。以前有没有人见过这样的事情,或者知道是什么原因造成的?多谢各位

World::World()
{
mBroadphase = new btDbvtBroadphase();
mCollisionConfiguration = new btDefaultCollisionConfiguration();
mDispatcher = new btCollisionDispatcher(mCollisionConfiguration);
mSolver = new btSequentialImpulseConstraintSolver();
mWorld = new btDiscreteDynamicsWorld(mDispatcher, mBroadphase, mSolver, mCollisionConfiguration);
mWorld->setGravity(btVector3(0, -10, 0));

mGroundShape = new btStaticPlaneShape(btVector3(0, 1, 0), 1);
mBoxShape = new btBoxShape(btVector3(4, 1.5, 1));

mGroundMotionState = new btDefaultMotionState(btTransform(btQuaternion(0, 0, 0, 1), btVector3(0, -10, 0)));
btRigidBody::btRigidBodyConstructionInfo groundRBCI(0, mGroundMotionState, mGroundShape, btVector3(0, 0, 0));

mGroundRigidBody = new btRigidBody(groundRBCI);
mGroundRigidBody->setUserIndex(1);
mWorld->addRigidBody(mGroundRigidBody);

btScalar mass = 1;
btVector3 boxInertia(0, 0, 0);
mBoxShape->calculateLocalInertia(mass, boxInertia);

mBoxMotionState1 = new btDefaultMotionState(btTransform(btQuaternion(0, 0, 0, 1), btVector3(0, 35, -20)));
btRigidBody::btRigidBodyConstructionInfo BoxRBCI1(mass, mBoxMotionState1, mBoxShape, btVector3(0, 0, 0));
mBoxRigidBody1 = new btRigidBody(BoxRBCI1);
mBoxRigidBody1->setUserIndex(2);

mBoxMotionState2 = new btDefaultMotionState(btTransform(btQuaternion(0, 0, 0, 1), btVector3(2, 20, -20)));
btRigidBody::btRigidBodyConstructionInfo BoxRBCI2(mass, mBoxMotionState2, mBoxShape, btVector3(0, 0, 0));
mBoxRigidBody2 = new btRigidBody(BoxRBCI2);
mBoxRigidBody2->setUserIndex(3);

mBoxMotionState3 = new btDefaultMotionState(btTransform(btQuaternion(0, 0, 0, 1), btVector3(-5, 12, -20)));
btRigidBody::btRigidBodyConstructionInfo BoxRBCI3(mass, mBoxMotionState3, mBoxShape, btVector3(0, 0, 0));
mBoxRigidBody3 = new btRigidBody(BoxRBCI3);
mBoxRigidBody3->setUserIndex(4);

mWorld->addRigidBody(mBoxRigidBody1);
mWorld->addRigidBody(mBoxRigidBody2);
mWorld->addRigidBody(mBoxRigidBody3);



}

啊哈!我有这个问题,我找不到答案的年龄,所以我很乐意帮助

线路

mBoxShape->calculateLocalInertia(mass, boxInertia);
修改
boxInertia
,然后需要将其传递给
bRigidBody::bRigidBodyConstructionInfo
的构造函数,如下所示:

btRigidBody::btRigidBodyConstructionInfo BoxRBCI1(mass, mBoxMotionState1, mBoxShape, boxInertia);

然后你的盒子应该旋转:)

啊哈!我有这个问题,我找不到答案的年龄,所以我很乐意帮助

线路

mBoxShape->calculateLocalInertia(mass, boxInertia);
修改
boxInertia
,然后需要将其传递给
bRigidBody::bRigidBodyConstructionInfo
的构造函数,如下所示:

btRigidBody::btRigidBodyConstructionInfo BoxRBCI1(mass, mBoxMotionState1, mBoxShape, boxInertia);
然后你的盒子应该旋转:)