Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Math 一个轴与另一个轴相交的Unity 3D矢量计算_Math_Unity3d - Fatal编程技术网

Math 一个轴与另一个轴相交的Unity 3D矢量计算

Math 一个轴与另一个轴相交的Unity 3D矢量计算,math,unity3d,Math,Unity3d,嘿,我有个问题,我没有在Unity 3D上计算这个 我想操纵顶点。没关系,但我想在鼠标所在的X轴上移动。那不能正常工作 所以我要做的就是从原点向一个方向投射光线。所以光线可以是无限长的 有了这个,我想将网格的垂直移动到鼠标所在的点。我用ray_z=vertice_z(伪)限制了它的范围,但是如果你看那条黑色的线,当我移动或旋转相机时,你会注意到它变长或变短了。因此,vertice与鼠标不在同一位置 所以我没有计算过。如何计算Z(黑线)与X(红线)之间的位置 例如: cam(1,0,0)//ca

嘿,我有个问题,我没有在Unity 3D上计算这个

我想操纵顶点。没关系,但我想在鼠标所在的X轴上移动。那不能正常工作

所以我要做的就是从原点向一个方向投射光线。所以光线可以是无限长的

有了这个,我想将网格的垂直移动到鼠标所在的点。我用ray_z=vertice_z(伪)限制了它的范围,但是如果你看那条黑色的线,当我移动或旋转相机时,你会注意到它变长或变短了。因此,vertice与鼠标不在同一位置

所以我没有计算过。如何计算Z(黑线)与X(红线)之间的位置

例如:

  • cam(1,0,0)//cam&光线的起始位置
  • x_轴(10,0,10)//红线切割黑色
  • ray_position(15,0,15)//光线的末端(如果从cam看向鼠标,鼠标可能在此处)
顺便说一句:视口不是自顶向下的。我画错了

如果你不明白,我可以再试一次

我想你在找什么

假设您的平面具有
法线(x-y平面)并通过原点:

Plane p = new Plane(Vector3.back, Vector3.zero);
然后可以找到摄影机/鼠标光线与该平面相交的点:

Ray ray = Camera.main.ScreenPointToRay(Input.mousePosition);

float distanceAlongRay;
p.Raycast(ray, out distanceAlongRay);
Vector3 mouseOnPlane = ray.GetPoint(distanceAlongRay);

mouseOnPlane
是x-y平面上鼠标射线击中的点。如果您只对x感兴趣,请使用
mouseOnPlane.x

Woo谢谢。这正是我想要的。我不知道这架飞机