与地形相交
Intersection with terrain
我尝试用一些Ogre::Ray实现碰撞系统,但似乎不起作用…
代码如下:
Ogre::Vector3 robotPos = mRobotNode->getPosition();
Ogre::Ray robotRay(Ogre::Vector3(robotPos.x,5000.0f,robotPos.z),Ogre::Vector3::NEGATIVE_UNIT_Y);
mRaySceneQuery->setRay(robotRay);
mRaySceneQuery->setSortByDistance(false);
Ogre::RaySceneQueryResult &result = mRaySceneQuery->execute();
Ogre::RaySceneQueryResult::iterator itr;
for(itr = result.begin();itr != result.end(); itr++)
{
if(itr->worldFragment)
{
Ogre::Real terrainHeight = itr->worldFragment->singleIntersection.y;
if(terrainHeight!=robotPos.y)
{
mRobotNode->setPosition(Ogre::Vector3(robotPos.x,terrainHeight,robotPos.z));
mCameraNode->setPosition(Ogre::Vector3(robotPos.x,terrainHeight,robotPos.z));
break;
}
}
}
这段代码放入了函数:frameenderingqueued:)
但我的网格保持在地形下方
有人能帮帮我吗?:)谢谢
为什么不使用调试器更深入一些呢?你可以意识到,这个问题在你的"if(terrainHeight!= robotpost .y)"条件下,或者你的"结果"变量里面有零元素,或者也许没有一个结果元素有积极的"worldFragment"字段。
如果您提供更多关于运行时发生的事情的信息,将有助于识别问题。
相关文章:
- 没有找到相关文章