我必须将 OGRE3D 用于大学项目,但是,我们不允许使用任何第三方库进行物理或碰撞检测。这包括使用 OGRE 的内置碰撞检测。
我在将我自己的自定义物理例程添加到 OGRE 的内置实体的正确方法上遇到了一些困难。
OGRE 使用“实体”对象作为最基本的构建块,对于物理,您需要对象具有质量、速度等属性。
我感到困惑的是,OGRE 的渲染/逻辑循环似乎隐藏在 OGRE 引擎内部的用户之外。这是一个问题,因为我需要能够获取 OGRE 中的每个实体,并使用我正在构建的自定义物理引擎执行碰撞检测和物理计算。
如何将我自己的物理/碰撞引擎类与 OGRE 集成?
更新:根据以下建议,我将 OGRE::Entity 子类化,即:
class PhysicsEntity : public Ogre::Entity;
PhysicsEntity *ent1 = (PhysicsEntity*)mSceneMgr->createEntity("PhysicsNinja", "ninja.mesh");;
SceneNode *node1 = mSceneMgr->getRootSceneNode()->createChildSceneNode("NinjaNode1");
node2->attachObject((Ogre::Entity*)ent1);
评论指出这不是符合 OO 的最佳方式,我同意但是我在这个阶段看不到更好的方式吗?你有什么想法,你有什么更好的想法,因为我对这样做并不完全满意。