2

宇宙船からレーザーを発射できる宇宙船ゲームを作成しています。基本的には、プレイヤーの船からカーソル位置までの光線を作成したいと考えています。プレーヤーは動き回ることができますが、カメラは固定されています。これまでのところ、次を使用してみました:

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);

ありがとう!

4

2 に答える 2

0

ソースからインストールした場合、または SDK を持っている場合は、チェックアウトすることをお勧めします。SdkTrays.h具体的にscreenToSceneは、、、sceneToScreenおよびgetCursorRay.

HTH

于 2012-11-08T23:23:56.380 に答える
0

カメラからビューポートへの光線は、カメラの位置から始まり、ワールド内でクリックした場所を通ります。

3 つの軸座標の 1 つがすべてのオブジェクトで同じである場合 (すべて同じ平面、2 次元)、カメラを使用して光線をビューポートし、光線が平面と交差するポイントを決定できます。次に、船からレーザーをそのポイントに向けることができます。

光線を使用して、カーソルでターゲットにしたオブジェクトの交点を取得することもできます。これは、2D および 3D 表現で機能します。再び、船からその地点までレーザーを引きます。

このようなレイ クエリの使用方法については、こちらで詳しく説明しています: http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Intermediate+Tutorial+3

于 2013-03-16T07:06:29.873 に答える