我正与朋友一起开发一些游戏,使用Ogre3D和Bullet Physics。 我设法让我们的游戏角色移动(只需简单的跑步和转弯)。
我想我可以通过这个类来实现'跳跃':
btCollisionWorld::ClosestRayResultCallback res(btFrom, btTo);.
但是,我的重大问题是碰撞优化。
我试过了:
刚刚在飞机上移动的FPS是60~80 = ok。但是当我的角色与任何其他刚体对象发生碰撞时,FPS将降至7。
我不知道解决这个问题。
我没有使用DynamicCharacterController
或KineticCharacterController
。
字符由setLinearVelocity()
和rigidbody->getWorldTransform().setRotation(quat)
函数
更多信息:
PhysicsManager::GetInstance()->getDynamicsWorld()->stepSimulation(evt.timeSinceLastFrame,8);
答案 0 :(得分:0)
我以前遇到过这个问题,我不知道你的情况是否如此,但我们正在实施Damned(游戏),当我们模拟厨房时,我们将炉灶的网格用作碰撞对象(btDbvtTriangleMeshShape),每当角色靠近火炉时,FPS都会熄火......
解决方案是为每个炉子使用简单的碰撞形状(比如带有几个盒子的btCompound),并且FPS问题消失了:)
希望您的问题类似于此,以便通过降低您正在使用的碰撞形状的复杂性来解决它。
如果不是这样,请告诉我你处理角色时运行的代码(强烈建议使用KinematicCharacterController,更推荐从Bullet转到PhysX; D)。
最佳。