Space
перечисление
Описание
Координатные пространства, в которых будет применяться преобразование к GameObject.
Значение из этого перечисления можно передать как параметр в такие методы, как Transform.Rotate и Transform.Translate чтобы указать, в каком координатном пространстве будет применяться преобразование.
Всемирное координатное пространство, представленное Space.World относится к положению GameObject относительно точки начала (0,0,0) осей x, y и z сцены. Transform.position свойство показывает текущее положение GameObject в мировом пространстве.
Использование Space.World для преобразования GameObject по отношению к его Transform.position и оси сцены, игнорируя собственную ориентацию GameObject. Например, transform.Translate(Vector3.forward, Space.World) добавляет одну единицу к объекту Transform.position на оси z сцены.
Локальное координатное пространство, представленное Space.Self относится к положению объекта относительно его родителя GameObject, включая любое вращение родителя GameObject. Transform.localPosition свойство даёт текущее положение GameObject в локальном пространстве, которое относительно родительского GameObject, если таковой существует. Если GameObject не имеет родителя, его Transform.localPosition является таким же, как его Transform.position.
Например, GameObject без родителя и Transform.position из (1,3,0) также будет иметь Transform.localPosition (1,3,0). Но если дочерний объект GameObject этого первого объекта имеет Transform.position (1,3,0), дочерний объект Transform.localPosition является (0,0,0), так как находится в том же положении, что и родительский объект.
Использование Space.Self для преобразования GameObject по отношению к его Transform.localPosition и его собственных локальных осей, с учетом его ориентации. Например, Transform.Translate(Vector3.forward, Space.Self) добавляет одну единицу к объекту Transform.localPosition на оси z объекта, которая может отличаться от оси z сцены в зависимости от ориентации объекта. Выберите объект в представлении Scene, чтобы увидеть его локальное положение и оси.
Более подробную информацию см. Преобразования, Вращение и ориентация в Unity, и Позиция GameObjects в Руководстве.
// 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()); } } }
Дополнительные ресурсы: ,Transform,, ,Transform.Rotate,, ,Transform.Translate,.