【发布时间】:2012-11-06 13:31:12
【问题描述】:
我正在创建一个宇宙飞船游戏,您可以在其中从他们的飞船发射激光。基本上我想创建一条从玩家船到光标位置的射线。玩家可以四处移动,但摄像机是静止的。到目前为止,我已经尝试过使用:
Ray laser = mCamera->getCameraToViewportRay(mMouse->getMouseState().X.abs, mMouse->getMouseState().Y.abs);
和设置:
laser.setOrigin->(mPlayer->getPosition);
但是,每次我执行射线场景查询时,它都会向屏幕的左上角发射。我在这里使用代码作为如何导出屏幕坐标的参考:http://www.ogre3d.org/forums/viewtopic.php?f=5&t=49132
关于额外学分的小问题:
有没有办法只在短时间内绘制ManualObject 来模拟激光枪的射击?我已经尝试使用以下 sn-p 绘制光线的一小部分:
Ogre::ManualObject* lazor = mSceneMgr->createManualObject("lazor");
lazor->begin("HiliteYellow", Ogre::RenderOperation::OT_LINE_LIST);
// define start and end point
for (int i = 0; i< 20000;i++)
{
lazor->position(laser.getPoint(30+i));
lazor->position(laser.getPoint(300+i));
}
lazor->end();
mSceneMgr->getRootSceneNode()->attachObject(lazor);
谢谢!
【问题讨论】:
标签: cursor raytracing ogre3d