To get the position of a gameobject in the world, you can retrieve a Vector3 (x,y,z) of it’s Position from the Transform component that’s added by default to every gameobject, as seen in the inspector:
gameObject.Transform.position
returns the absolute world position.
Note that this is the same as GetComponent<Transform>().position
on your gameobject.
gameObject.Transform.localPosition
returns the position relative to that gameobject parent’s position — if your gameobject has a parent whose position is not 0,0,0 this will return the Vector3 value of what you see in the inspector, rather than the absolute world position.
If you’re not sure how to reference the two gameobjects in your script, the simplest and most basic way is to create two GameObject variables in your script and expose them in the editor (since they are serializable):
public GameObject OriginPosition;
[SerializeField] private GameObject _destinationPosition;
Above: Two ways of exposing a variable to the Unity Inspector
Above: The result, now you can simply drag and drop GameObjects into these slots.
UnityEngine.Debug.Log(OriginalPosition.Transform.position);
UnityEngine.Debug.Log(_destinationPosition.Transform.position);
- Spaces
- Default
- Help Room
- META
- Moderators
-
- Topics
- Questions
- Users
- Badges
- Home /
How do I set and get the position of a object in vector 3 form?
Edit: I am using C#
3 Replies
·
Add your reply
- Sort:
Answer by Dave-Carlile · Jan 31, 2013 at 03:18 PM
Assuming you’re using C#…
transform.position = new Vector3(10, 20, 30);
Getting the position is just accessing transform.position
.
Vector3 p = transform.position;
Relevant documentation:
Transform class
Vector3 class
Atomion
Phenoxon
Shill1985
sbagchi
JjSilva
russisunni
Rstdj
Answer by Fu11English · Jan 31, 2013 at 10:00 PM
float x = transform.position.x;
Answer by ixjackinthebox · Jan 31, 2013 at 07:41 PM
Thanks so much but how can I get the position in (x, y, z)
To just print in on console you type
using UnityEngine;
using System.Collections;
public class position : MonoBehaviour {
public Vector3 pos;
// Use this for initialization
void Start () {
pos= transform.position;
Debug.Log("pos is " + pos);
}
}
Your answer
Update about the future of Unity Answers
Unity Answers content will be migrated to a new Community platform and we are aiming to launch a public beta later in June. Please note, we are aiming to set Unity Answers to read-only mode on the 31st of May in order to prepare for the final data migration.
For more information, please read our full announcement.
Follow this Question
Related Questions
Базовые операции
Вывод сообщений в консоль
Debug.Log(«String First»);
Debug.Log(«String Second»);
Debug.Log(«String Third»);
Движение и вращение локально
Движение и вращение локально
Движение с учётом текущего угла поворота
transform.Translate(0, 0, speedMove * Time.deltaTime);
transform.Rotate(0, speedRotating * Time.deltaTime, 0);
Движение и вращение глобально
Движение и вращение глобально
Движение в глобальном мире
transform.Translate(0, 0, speedMove * Time.deltaTime, Space.World);
transform.Rotate(0, speedRotating * Time.deltaTime, 0, Space.World);
Движение объекта в направление цели
Движение объекта в направление цели
GameObject targerGameObject = GameObject.Find(«Sphere»);
transform.position = Vector3.MoveTowards(transform.position, targerGameObject.transform.position, speed * Time.deltaTime);
Получение положения объекта
Получение положения объекта
Vector3 pos = gameObject.transform.position;
string s = pos.x + » » + pos.y + » » + pos.z;
Получение расстояния между объектами
Получение расстояния между объектами
GameObject person_1 = gameObject;
GameObject person_2 = GameObject.Find(«Sphere»);
float d = Vector3.Distance(person_1.transform.position, person_2.transform.position);
Vector3 pos = GameObject.Find(«Sphere»).transform.position — transform.position;
Quaternion rotation = Quaternion.LookRotation(pos);
transform.rotation = rotation;
Получить угол поворота по оси Y
Получить угол поворота по оси Y
float yyy = gameObject.transform.rotation.y;
Изменение координат точки
Изменение координат точки
Vector3 p = new Vector3(0, 0, 0);
gameObject.transform.position = p;
Сделать приложение во весь экран.
Screen.fullScreen = true;
Свойство transform объекта GameObject содержит в себе данные о положении объекта в игровом мире.
Возвращает глобальные координаты объекта в игровом мире. Возвращаемая величина имеет тип Vector3, который представляет из себя список из 3 координат — x, y и z:
var position = GameObject.transform.position;
var x = position.x;
Переместить объект в точку 0, 10, 0 игрового мира.
GameObject.transform.position = Vector3(0, 10, 0);
Тоже самое, что и в случае глобальных координат, но с локальными. Локальные координаты расситываются относительно родительского объекта. В случае отсутствия родительского объекта локальные координаты совпадают с глобальными:
var localPosition = GameObject.transform.localPosition;
var x = localPosition.x;
Поворот объекта в углах Эйлера. Метод также возвращает координаты в виде объекта Vector3:
var eulerAngle = GameObject.transform.eulerAngles;
Тоже самое, что и предыдущий пример, но поворот объекта рассчитывается относительно родительского объекта:
var localEulerAngle = GameObject.transform.localEulerAngles;
Текущий угол поворота объекта, основанный на кватернионах. Возвращает объект типа Quaternion.
var quaternionAngle = GameObject.transform.rotation;
Текущий поворот объекта, основанный на кватернионах, но относительно родительского объекта:
var localQuaternionAngle = GameObject.transform.localRotation;
Сброс угла поворота объекта:
GameObject.transform.rotation = Quaternion.identity;
GameObject.transform.localRotation = Quaternion.identity;
Вращаем наш объект в указанную сторону со скоростью 1 градус в секунду. Принимает в качестве координат объект типа Vector3. Метод deltaTime объекта Time содержит время в секундах, затраченное на выполнение предыдущего кадра:
GameObject.transform.Rotate(Vector3.left * Time.deltaTime);
Тоже самое, что и предыдущий пример, но вращение объекта относительно координат родителя:
GameObject.transform.localRotate(Vector3.left * Time.deltaTime);
Перемещаем наш объект в указанном направлении со скоростью 1 юнит в секунду. Также принимает в качестве координат объект класса Vector3:
GameObject.transform.Translate(Vector3.up * Time.deltaTime);
I have UI elements (image, etc). Canvas attached to camera.
There is a RectTransform
, but how to convert this data to screen or world coordinates and get center point of this image?
Tried RectTransform.GetWorldCorners
but it returns zero vectors.
Brent Worden
10.5k7 gold badges52 silver badges57 bronze badges
asked Apr 24, 2015 at 13:17
yourRectTransform.rect.center
for the centre point in local space.
yourRectTransform.TransformPoint
to convert to world space.
It is odd that RectTransform.GetWorldCorners
doesn’t work as stated. Per one of the other answers you need to call after Awake (so layout can occur).
answered Apr 24, 2015 at 20:12
HuacanachaHuacanacha
1,1517 silver badges9 bronze badges
3
I found that both GetWorldCorners and TransformPoint only work on Start(), not on Awake(), as if we’ll have to wait for the content to be resized
Vector3 min = referenceArea.rectTransform.TransformPoint(referenceArea.rectTransform.rect.min);
Vector3 max = referenceArea.rectTransform.TransformPoint(referenceArea.rectTransform.rect.max);
elementToResize.transform.localScale = new Vector3(Mathf.Abs(min.x - max.x) , Mathf.Abs(min.y - max.y), 1f);
elementToResize.transform.position = referenceArea.rectTransform.TransformPoint(referenceArea.rectTransform.rect.center);
answered Aug 2, 2016 at 7:22
alexalex
413 bronze badges
You can work with GetWorldCorners
but only when using a child that has real dimensions. I got reasonable values for a child of a world space canvas.
answered Oct 8, 2015 at 14:35
KayKay
12.9k4 gold badges54 silver badges77 bronze badges
Following Huacanacha’s guidance,
Vector2 _centerPosition = _rectTransform.TransformPoint(_rectTransform.rect.center);
will give you the WorldCoordinate of the center of the image.
answered Jun 16, 2021 at 13:27
Onat KorucuOnat Korucu
94211 silver badges13 bronze badges