Я разрабатываю несколько игр с друзьями, используя Ogre3D и Bullet Physics. Мне удалось заставить нашего игрового персонажа двигаться (просто беги и поворачивайся).
Думаю, я могу реализовать "прыжки" этим классом:
btCollisionWorld::ClosestRayResultCallback res(btFrom, btTo);.
Однако моей большой проблемой является оптимизация столкновений.
Я пытался:
- добавление 100~500 объектов Rigidbody (после того, как мы изменили их на mapobject в нашей игре)
- один объект staticplanecollision (земля)
- односимвольный твердый объект
FPS при простом перемещении по плоскости 60~80 = нормально. Но когда мой персонаж сталкивается с любым другим твердым объектом, FPS падает до 7.
Я понятия не имею, как решить эту проблему. Я не использую DynamicCharacterController
или KineticCharacterController
. Персонаж управляется функциями setLinearVelocity()
и rigidbody->getWorldTransform().setRotation(quat)
Еще немного информации:
PhysicsManager::GetInstance()->getDynamicsWorld()->stepSimulation(evt.timeSinceLastFrame,8);