【问题标题】:LineRenderer points to world transform coordsLineRenderer 指向世界变换坐标
【发布时间】:2021-10-24 05:06:56
【问题描述】:

我试图让敌人沿着确定的路线移动。 我认为合乎逻辑的解决方案是使用 LineRenderer,然后将本地坐标转换为世界坐标。

但老实说,我不知道该怎么做。

我希望它尊重旋转,因为能够执行这些可变路径真的很酷。

【问题讨论】:

    标签: c# unity3d position transform


    【解决方案1】:

    如果您希望将本地坐标转换为世界坐标,您可以在代码中使用 GameObject 中的Transform 来转换您的坐标。

    Transform 具有函数 Transform.TransformPoint(Vector3 position),它将使用 Transforms 的位置、旋转和缩放,返回世界空间中的新点。

    Transform _transform;
    Vector3 _originalVector = new Vector3( 1, 1, 1);
    Vector3 _transformedVector = _transform.TransformPoint(_originalVector);
    

    Vector3 _transformedVector 将是您在世界空间中寻找的位置。

    【讨论】:

      【解决方案2】:

      当然,您可以使用Transform.TransformPoint获取本地行位置并将它们全部转换为世界空间

      将位置从局部空间转换到世界空间。

      并遍历线的所有点

      var amount = lineRenderer.GetPositions(out Vector3 [] points);
      var worldPoints = new Vector3[amount];
      for(var i = 0; i < amount; i++)
      {
          worldPoints[i] = lineRenderer.transform.TransformPoint(points[i]);
      }
      

      但是,为什么不直接启用LineRenderer.useWorldSpace 并立即使用世界空间坐标配置您的线?

      如果启用,线条将在世界空间中定义。

      这意味着对象的位置被忽略,线条围绕世界原点渲染。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-07-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多