私は 3D XNA プロジェクトに取り組んでおり、この問題について 2 週間ほど考えてきました。だから私はあなたに尋ねることにしました。
基本的に平面があり、マウスの位置をその平面に投影したいのですが、どうすればよいですか? 私はそれを行うために多くの方法を試し、角度を計算しました...しかし、距離がX位置に影響を与える必要があることがわかりました。おそらく、これまで聞いたことのない数学が必要になるでしょう。
マウスの状態を指定すると、位置を Vector3(x,y,z) として返すコードを数年前に作成しました。
private Vector3 FindWhereClicked(MouseState ms)
{
Vector3 nearScreenPoint = new Vector3(ms.X, ms.Y, 0);
Vector3 farScreenPoint = new Vector3(ms.X, ms.Y, 1);
Vector3 nearWorldPoint = device.Viewport.Unproject(nearScreenPoint, cam.projectionMatrix, cam.viewMatrix, Matrix.Identity);
Vector3 farWorldPoint = device.Viewport.Unproject(farScreenPoint, cam.projectionMatrix, cam.viewMatrix, Matrix.Identity);
Vector3 direction = farWorldPoint - nearWorldPoint;
float zFactor = -nearWorldPoint.Y / direction.Y;
Vector3 zeroWorldPoint = nearWorldPoint + direction * zFactor;
return zeroWorldPoint;
}
それがうまくいくことを願っています。