C#XNA鼠标的位置投射到3D平面
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#XNA鼠标的位置投射到3D平面相关的知识,希望对你有一定的参考价值。
我工作的一个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;
}
- 设备是GraphicsDevice的的一个实例。
希望对你有效。
以上是关于C#XNA鼠标的位置投射到3D平面的主要内容,如果未能解决你的问题,请参考以下文章