2012-11-06 7 views
1

우주선에서 레이저를 발사 할 수있는 우주선 게임을 만들고 있습니다. 기본적으로 플레이어에서 커서 위치로 레이를 만들고 싶습니다. 플레이어는 움직일 수 있지만 카메라는 정적입니다. 지금까지 나는 사용하여 시도했다 :Ogre3D를 사용하여 커서 좌표에서 광선 유도

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

고마워요!

답변

0

소스를 설치했거나 SDK를 가지고있는 경우 - 특히 screenToScene, sceneToScreengetCursorRay을 확인하시기 바랍니다.

HTH

0

에게 선을 뷰포트 카메라는 카메라의 위치에서 시작하고 당신이 당신의 세계에서 클릭 한 위치 통해 간다.

3 개의 축 좌표 중 하나가 모든 객체 (모두 동일한 평면 2d)에서 동일한 경우 광선을 평야와 교차하는 지점을 결정하기 위해 카메라를 사용할 수 있습니다. 그러면 우주선에서 그 지점으로 레이저를 그릴 수 있습니다.

광선을 사용하여 커서로 대상을 지정한 객체의 교차점을 가져올 수도 있습니다. 그것은 2 차원 및 3 차원 표현과 함께 작동합니다. 다시 당신은 우주선에서 그 지점으로 레이저를 그릴 것입니다.

이러한 광선 쿼리를 사용하는 방법은 여기에서 자세히 설명합니다. http://www.ogre3d.org/tikiwiki/tiki-index.php?page=Intermediate+Tutorial+3