Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.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++ 如何控制子弹物理中的玩家角色?_C++_Bulletphysics - Fatal编程技术网

C++ 如何控制子弹物理中的玩家角色?

C++ 如何控制子弹物理中的玩家角色?,c++,bulletphysics,C++,Bulletphysics,我不知道你们应该如何控制子弹中的玩家角色。我阅读的方法是使用提供的btKinematicCharacterController。我还从演示中看到了使用btDynamicCharacterController的方法。然而,手册中指出,运动学控制器存在几个悬而未决的问题。这仍然是首选路径吗?如果有,是否有关于这方面的教程或文档?我所找到的只是演示中的代码片段,以及在Ogre中使用控制器的情况,我没有使用 如果这不是应该走的路,那么有人会给我指出正确的解决方案。我是bullet的新手,想要一个简单明了

我不知道你们应该如何控制子弹中的玩家角色。我阅读的方法是使用提供的btKinematicCharacterController。我还从演示中看到了使用btDynamicCharacterController的方法。然而,手册中指出,运动学控制器存在几个悬而未决的问题。这仍然是首选路径吗?如果有,是否有关于这方面的教程或文档?我所找到的只是演示中的代码片段,以及在Ogre中使用控制器的情况,我没有使用

如果这不是应该走的路,那么有人会给我指出正确的解决方案。我是bullet的新手,想要一个简单明了的解决方案。我现在拥有的是一个btKinematicCharacterController的部分

这是我用来设置控制器的代码:

playerShape = new btCapsuleShape(0.25, 1);
ghostObject= new btPairCachingGhostObject();
ghostObject->setWorldTransform(btTransform(btQuaternion(0,0,0,1),btVector3(0,20,0)));
physics.getWorld()->getPairCache()->setInternalGhostPairCallback(new btGhostPairCallback());
ghostObject->setCollisionShape(playerShape);
ghostObject->setCollisionFlags(btCollisionObject::CF_CHARACTER_OBJECT);
controller = new btKinematicCharacterController(ghostObject,playerShape,0.5);
physics.getWorld()->addCollisionObject(ghostObject,btBroadphaseProxy::CharacterFilter, btBroadphaseProxy::StaticFilter|btBroadphaseProxy::DefaultFilter);
physics.getWorld()->addAction(controller);
这是我用来访问控制器位置的代码:

trans = controller->getGhostObject()->getWorldTransform();
camPosition.z = trans.getOrigin().z();
camPosition.y = trans.getOrigin().y()+0.5;
camPosition.x = trans.getOrigin().x();
我控制它的方式是通过setWalkDirection()和jump()(如果canJump()为true)

现在的问题是,这个角色有点神志不清,然后从静止的地板上掉下来。显然,这不是有意的。这是因为缺少刚体吗?如何整合

事实上,现在它只是像应该的那样下降,但随后慢慢地在地板上下沉

我将这条线移动到动态世界创建之后

physics.getWorld()->getPairCache()->setInternalGhostPairCallback(new btGhostPairCallback());
现在是这样:

broadphase->getOverlappingPairCache()->setInternalGhostPairCallback(new btGhostPairCallback());
我还使用从blender导入的.bullet文件,如果相关的话


问题在于bullet文件,该文件已修复(碰撞框无法工作)。然而,我仍然会感到紧张不安,有时无法站起来,从高处立即下来,以及其他问题。

我对这个问题的回答告诉你什么对我有效,显然对提问的人也有效

bullet中的角色控制器实现非常“基本”。 要获得好的角色控制器,你需要投入这么多