SNIPPET:射線查詢、固定terrain中相機高度
創建查詢器
mRaySceneQuery = mSceneMgr->createRayQuery(Ray());
銷毀查詢器
mSceneMgr->destroyQuery(mRaySceneQuery);
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
}

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17
