嘿,我有一个问题,我不会在Unity 3D上计算出来
我想操纵顶点。多数民众赞成,但我想继续我的鼠标所在的X轴。这不能正常工作。
所以我所做的只是将光线从原点投射到一个方向。所以射线可能无限长。
有了这个,我想将网格的顶点移动到鼠标所在的位置。我用ray_z = vertice_z(伪)来限制它的范围,但是如果你看到黑色线条就是光线,当我移动或旋转相机时你注意到它会变长或变短。因此顶点与鼠标不在同一位置。
所以我没有得到计算。如何从Z(黑线)到X(红线)计算位置。
示例:
顺便说一句:视口不是自上而下的。我错了。
如果你不明白我可以再试一次^^。
答案 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
。