SNIPPET:射线查询、固定terrain中相机高度

SNIPPET:射线查询、固定terrain中相机高度

创建查询器
mRaySceneQuery = mSceneMgr->createRayQuery(Ray());

销毁查询器
mSceneMgr->destroyQuery(mRaySceneQuery);

 1 //  The ray scene query pointer
 2 Ogre::RaySceneQuery  * mRaySceneQuery;
 3 //  Setup the scene query
 4 Ogre::Vector3 camPos  =  mCamera -> getPosition();
 5 Ogre::Ray cameraRay(Ogre::Vector3(camPos.x,  5000.0f , camPos.z), Ogre::Vector3::NEGATIVE_UNIT_Y);
 6 mRaySceneQuery -> setRay(cameraRay);
 7
 8 //  Perform the scene query
 9 Ogre::RaySceneQueryResult  & result  =  mRaySceneQuery -> execute();
10 Ogre::RaySceneQueryResult::iterator itr  =  result.begin();
11 //  Get the results, set the camera height
12 if  (itr  !=  result.end()  &&  itr -> worldFragment)
13 {
14    Ogre::Real terrainHeight = itr->worldFragment->singleIntersection.y;
15    //if ((terrainHeight + 10.0f) > camPos.y)
16        mCamera->setPosition( camPos.x, terrainHeight + 10.0f, camPos.z );
17}

你可能感兴趣的:(SNIPPET:射线查询、固定terrain中相机高度)