void moveCamera()
...{
mLastPosition=mCamera->getPosition();
mCamera->yaw(mRotX);
mCamera->pitch(mRotY);
mCamera->moveRelative(mTranslateVector);
//创建一个球体查询,这里的10是m_SphereNode挂着的那个球体的半径
SphereSceneQuery* pQuery=mSceneMgr->createSphereQuery(Sphere(mCamera->getPosition(),10));
//执行这个查询
SceneQueryResult QResult=pQuery->execute();
//遍历查询列表找出范围内的物体
for (std::list<MovableObject*>::iterator iter = QResult.movables.begin(); iter != QResult.movables.end();++iter)
...{
MovableObject* pObject=static_cast<MovableObject*>(*iter);
if(pObject)
...{
if(pObject->getMovableType()=="Entity")
...{
mCamera->setPosition(mLastPosition);
//if(ent->getName()=="Head")
//{
// MessageBox(NULL,"a","df",MB_OK);
//break;
//}
}
}
}
}
本文介绍了一个使用Ogre3D引擎实现的相机移动与碰撞检测机制。具体包括相机的位置更新、旋转操作以及如何通过球体查询检测相机是否与场景中的实体发生碰撞。对于每个可能碰撞的对象,会进行类型检查并采取相应的处理措施。
6114

被折叠的 条评论
为什么被折叠?



