среда, 4 апреля 2012 г.

Немного про координаты


Свойство 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);


Данная статья взята с http://habrahabr.ru/post/128711/

7 комментариев:

  1. Плохо написано, непонятно это ява или си, да и не работает это.

    ОтветитьУдалить
    Ответы
    1. Это си, ява уже не поддерживается

      Удалить
    2. оба молодцы. Это C#. Java и C не поддерживались никогда. Java и JavaScript похожи только первыми четырьмя буквами в названии.

      Удалить
    3. Это старый C#. Теперь уже синтаксис будет другой.

      Удалить
  2. Чисто из любопытства.
    Код:
    GameObject.transform.localRotate(Vector3.left * Time.deltaTime);
    А именно "transform.localRotate" - с какой версии Unity было удалено?
    У мну 5.6.4 и там только "transform.Rotate" или же "transform.localRotation"

    ОтветитьУдалить
  3. я не могу понять как получить ротейшен который написан в инспекторе, у меня обсолютно разные цифры получаються

    ОтветитьУдалить