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); } } }
其他资源:Transform.TransformPoint、Transform.InverseTransformPoints、Transform.TransformDirections、Transform.TransformVectors。
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); } } }