版本:Unity 6 (6000.0)
语言英语
  • C#

Transform.TransformPoints

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。虽然我们无法接受所有提交内容,但我们确实阅读了用户提出的每项建议,并在适用时进行更新。

关闭

提交失败

由于某种原因,您的建议更改无法提交。请 <a>稍后再试</a>。感谢您花时间帮助我们提高 Unity 文档的质量。

关闭

取消

切换到手册

声明

public void TransformPoints(Span<Vector3> positions);

参数

positions 要转换的点的坐标,每个点都会被替换为转换后的版本。

描述

将多个点从局部空间转换为世界空间,用转换后的版本覆盖每个原始点。

请注意,返回点的坐标会受缩放的影响。如果您正在处理方向向量,请使用 Transform.TransformDirections

您可以使用 Transform.InverseTransformPoints 执行相反的转换,从世界空间到局部空间。

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { public GameObject someObject;

const int kNumPoints = 100;

void Start() { // Instantiate 100 objects to the right of the current object Vector3[] points = new Vector3[kNumPoints]; for (int pointNum = 0; pointNum < kNumPoints; pointNum++) { points[pointNum] = Vector3.right * pointNum; } transform.TransformPoints(points); for (int pointNum = 0; pointNum < kNumPoints; pointNum++) { Instantiate(someObject, points[pointNum], someObject.transform.rotation); } } }

声明

public void TransformPoints(ReadOnlySpan<Vector3> positions, Span<Vector3> transformedPositions);

参数

positions 要转换的点的坐标,除非 transformedPositions 跨度重叠,否则这些向量不会被函数修改。
transformedPositions 接收每个点的转换后的坐标,必须与 positions 的长度相同,否则会抛出异常。如果此跨度与 positions 重叠,但并非代表完全相同的元素,则其行为未定义。

描述

将多个点从局部空间转换为世界空间,并将转换后的点写入可能不同的位置。

请注意,返回点的坐标会受缩放的影响。如果您正在处理方向,请使用 Transform.TransformDirections

您可以使用 Transform.InverseTransformPoints 执行相反的转换,从世界空间到局部空间。

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour { public GameObject someObject;

const int kNumPoints = 100;

void Start() { // Instantiate 100 objects to the right of the current object Vector3[] points = new Vector3[kNumPoints]; for (int pointNum = 0; pointNum < kNumPoints; pointNum++) { points[pointNum] = Vector3.right * pointNum; } Vector3[] transformedPoints = new Vector3[kNumPoints]; transform.TransformPoints(points, transformedPoints); for (int pointNum = 0; pointNum < kNumPoints; pointNum++) { Instantiate(someObject, transformedPoints[pointNum], someObject.transform.rotation); } } }