Mouse Picking

그냥 Xna 예제를 보고 따라면 된다. 그리고 Ray의 시작점에서 거리 만큼 가면 만나는 지점임…이 것을 계산하면 된다.

private void ProcessMouse(GameTime gameTime)
        {
            MouseState ms = Mouse.GetState();
 
            curMousePos.X = ms.X;
            curMousePos.Y = ms.Y;
 
            Vector3 nearsource = new Vector3((float)curMousePos.X, (float)curMousePos.Y, 0f);
            Vector3 farsource = new Vector3((float)curMousePos.X, (float)curMousePos.Y, 1f);
 
            Matrix world = Matrix.CreateTranslation(0, 0, 0);
 
            Vector3 nearPoint = GraphicsDevice.Viewport.Unproject(nearsource,
                projectionMatrix, viewMatrix, world);
 
            Vector3 farPoint = GraphicsDevice.Viewport.Unproject(farsource,
                projectionMatrix, viewMatrix, world);
 
            Vector3 direction = farPoint - nearPoint;
            direction.Normalize();
            Ray pickRay = new Ray(nearPoint, direction);
 
            Nullable<float> dis = pickRay.Intersects(new Plane(0, 1, 0, 0));
 
            if (dis != null) cursorPos = pickRay.Direction * (float)dis + pickRay.Position;
              // Ray의 시작점에서 거리 만큼 가면 만나는 지점임...이 것을 계산..
        }

* 출처: Mouse Picking

누구나 수정하실 수 있습니다. 문법은 Formatting Syntax참조하세요.

역링크