Transform.position
Declaration
public Vector3 position;Описание
Мировая космическая позиция Transform.
Свойство position объекта GameObject в его Transform; к нему можно обращаться как в Unity Editor, так и из скриптов. Измените это значение, чтобы переместить GameObject. Получите это значение, чтобы определить позицию GameObject в мировом 3D-пространстве.
Дополнительные сведения о позиции и осях см. в разделе class-Transform.
Чтобы объект мог перемещаться при изменении, его нужно создать как экземпляр в Scene. Ассеты Prefab по-прежнему являются GameObject, но не имеют экземпляров. Поэтому Unity не использует данные из Transform position корневого ассета иерархии Prefab.
using UnityEngine;
public class ExampleClass : MonoBehaviour { //movement speed in units per second private float movementSpeed = 5f;
void Update() { //get the Input from Horizontal axis float horizontalInput = Input.GetAxis("Horizontal"); //get the Input from Vertical axis float verticalInput = Input.GetAxis("Vertical");
//update the position transform.position = transform.position + new Vector3(horizontalInput * movementSpeed * Time.deltaTime, verticalInput * movementSpeed * Time.deltaTime, 0);
//output to log the position change Debug.Log(transform.position); } }
Этот пример получает ввод с горизонтальной и вертикальной осей и перемещает GameObject вверх/вниз или влево/вправо, изменяя его положение.
Другой пример:
using UnityEngine;
public class ExampleClass2 : MonoBehaviour { //movement speed in units per second private float distance = 5f; public GameObject prefabToInstantiate;
void Start() { if (prefabToInstantiate != null) InstantiateAbove(prefabToInstantiate); }
void InstantiateAbove(GameObject prefab) { //instantiate above at the given distance Vector3 offset = new Vector3(0, distance, 0); GameObject.Instantiate(prefab, transform.position + offset, Quaternion.identity); } }
Этот пример инстанционирует заданный префаб на 5 единиц выше позиции GameObject с помощью этого скрипта.