【问题标题】:Unity 3D Vector calculating on one axis crossing other axisUnity 3D Vector 在一个轴上计算与另一轴相交
【发布时间】:2015-09-03 21:20:28
【问题描述】:

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

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

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

有了这个,我想将网格的顶点移动到鼠标所在的点。我用 ray_z = vertice_z (伪)限制了它的范围,但是如果您查看作为射线的黑线,您会发现当我移动或旋转相机时它会变长或变短。所以顶点和鼠标不在同一个位置。

所以我没有计算出来。如何计算 Z(黑线)与 X(红线)相交的位置。

例子:

  • cam(1,0,0) // cam & 射线的起始位置
  • x_axis(10,0,10) // 红线切黑
  • ray_position(15,0,15) // 射线的末端(如果你从一个摄像头看到另一个鼠标,鼠标可能在哪里)

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

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

【问题讨论】:

    标签: math unity3d


    【解决方案1】:

    我想你正在寻找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

    【讨论】:

    • 哇,谢谢。这正是我想要的。不知道飞机
    猜你喜欢
    • 2016-05-22
    • 2018-07-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-26
    • 2011-10-30
    相关资源
    最近更新 更多