宇宙船からレーザーを発射できる宇宙船ゲームを作成しています。基本的には、プレイヤーの船からカーソル位置までの光線を作成したいと考えています。プレーヤーは動き回ることができますが、カメラは固定されています。これまでのところ、次を使用してみました:
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
レーザー銃からのショットをシミュレートするために、短時間だけ描画する方法はありますか? 次のスニペットを使用して、光線のごく一部を描画しようとしました。
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);
ありがとう!