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참조하세요. |
---|