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

Space

枚举

建议更改

成功!

感谢您帮助我们提高 Unity 文档的质量。尽管我们无法接受所有提交的内容,但我们确实会阅读用户提出的每个建议更改,并在适用情况下进行更新。

关闭

提交失败

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

关闭

取消

描述

对 GameObject 应用变换的坐标空间。

您可以从此枚举中传递一个值作为参数传递给方法,例如Transform.RotateTransform.Translate,以指定在哪个坐标空间中应用变换。

Space.World 表示的世界坐标空间指的是相对于场景 x、y 和 z 轴原点 (0,0,0) 的 GameObject 位置。该Transform.position 属性给出 GameObject 在世界空间中的当前位置。

使用 Space.World 相对于其 Transform.position 和场景轴变换 GameObject,忽略 GameObject 自己的方向。例如,transform.Translate(Vector3.forward, Space.World) 在场景的 z 轴上将对象 Transform.position 添加一个单位。

Space.Self 表示的局部坐标空间指的是相对于其父级 GameObject 的对象位置,包括父级 GameObject 的任何旋转。该 Transform.localPosition 属性给出 GameObject 在局部空间中的当前位置,该位置相对于父级 GameObject(如果存在)。如果 GameObject 没有父级,则其 Transform.localPosition 与其 Transform.position 相同。

例如,一个没有父级且 Transform.position 为 (1,3,0) 的 GameObject 也会有 Transform.localPosition 为 (1,3,0)。但如果此第一个对象的子级 GameObject 的 Transform.position 为 (1,3,0),则子级对象的 Transform.localPosition 为 (0,0,0),因为它与父级对象在同一位置。

使用 Space.Self 相对于其 Transform.localPosition 及其自身的局部轴变换 GameObject,考虑其方向。例如,Transform.Translate(Vector3.forward, Space.Self) 在对象的 z 轴上将对象的 Transform.localPosition 添加一个单位,这可能与场景的 z 轴不同,具体取决于对象的方向。在场景视图中选择一个对象以查看其局部位置和轴。

有关更多信息,请参阅手册中的 变换Unity 中的旋转和方向定位游戏对象

// Attach this script to a GameObject.
// This example demonstrates the difference between Space.World and Space.Self in rotation.
// The inWorldSpace field is automatically exposed as a checkbox in the Inspector window labelled In World Space. Enable or disable the checkbox in the Inspector to start in world or self space, respectively.
// Press play to see the GameObject rotating appropriately. Press space or toggle the In World Space checkbox to switch between world and self space.

using UnityEngine;

public class Example : MonoBehaviour { float rotationSpeed; public bool inWorldSpace;

void Start() { // Set the speed of the rotation rotationSpeed = 20.0f; // Start off in World.Space inWorldSpace = true; // Rotate the GameObject a little at the start to show the difference between world and local spaces transform.Rotate(60, 0, 60); }

void Update() { // Rotate the GameObject in world space if inWorldSpace is true if (inWorldSpace) transform.Rotate(Vector3.up * rotationSpeed * Time.deltaTime, Space.World); // Otherwise, rotate the GameObject in local space else transform.Rotate(Vector3.up * rotationSpeed * Time.deltaTime, Space.Self);

// Press the Space button to switch between world and local space states if (Input.GetKeyDown(KeyCode.Space)) { // Make the current state switch to the other state inWorldSpace = !inWorldSpace; // Output the current state to the console Debug.Log("World space : " + inWorldSpace.ToString()); } } }

属性

World世界坐标空间,相对于场景 x、y 和 z 轴的原点 (0,0,0)。
Self相对于其父级(包括方向)的 GameObject 的局部坐标系。