统一3D矢量计算在一个轴上穿过其他轴

时间:2015-09-03 21:20:28

标签: math unity3d

嘿,我有一个问题,我不会在Unity 3D上计算出来

我想操纵顶点。多数民众赞成,但我想继续我的鼠标所在的X轴。这不能正常工作。

所以我所做的只是将光线从原点投射到一个方向。所以射线可能无限长。

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

所以我没有得到计算。如何从Z(黑线)到X(红线)计算位置。

示例:

  • cam(1,0,0)// cam&光线的起始位置
  • x_axis(10,0,10)//红线切割黑色
  • ray_position(15,0,15)//光线的终点(如果从凸轮到鼠标,鼠标可以在哪里)

顺便说一句:视口不是自上而下的。我错了。

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

Example

1 个答案:

答案 0 :(得分:2)

我认为你正在寻找Plane.Raycast

让我们说你的飞机有<0, 0, -1>法线(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