Menu
CoddyTech

Локальное и мировое пространство

Часть раздела Основы скриптинга в Unity путешествия по Unity на Coddy. Урок 19 из 67.

У объекта есть собственные направления, помимо направлений мира. transform.forward указывает туда, куда направлен нос объекта (синяя стрелка в окне Scene в Unity), и задаётся мировым вектором длиной в одну единицу; transform.right и transform.up — это собственные направления объекта вправо и вверх. Поверните объект — и они повернутся вместе с ним. Этот бумажный самолётик повёрнут на 90 градусов вокруг y в сцене, поэтому он летит вдоль мировой оси x, туда, куда направлен:

public float speed = 4f;

void Update()
{
    transform.position += transform.forward * speed * Time.deltaTime;
}

transform.Translate(Vector3.forward * speed * Time.deltaTime) делает то же самое, потому что Translate интерпретирует свой вектор в собственном пространстве объекта: там Vector3.forward означает направление вперёд для объекта. Передайте Space.World вторым аргументом, и вместо этого будут использоваться оси мира, поэтому transform.Translate(Vector3.forward * speed * Time.deltaTime, Space.World) перемещает объект вдоль мировой оси z, куда бы ни был направлен самолётик.

transform.Rotate также поворачивает объект вокруг его собственных осей. Если смотреть сверху, положительный угол вокруг y поворачивает объект, стоящий вертикально, вправо, а отрицательный — влево; его transform.forward поворачивается вместе с ним.

challenge icon

Задание

Легко

Добавь танку управление: стрелка вправо поворачивает его вправо, а стрелка влево — влево вокруг его оси y со скоростью turn градусов в секунду. Стрелка вверх ведёт его вперёд, в направлении, куда он смотрит, со скоростью speed единиц в секунду. Сам по себе поворот не перемещает танк.

Нажми Play, поверни и проедь вперёд, затем нажми Check.

Попробуйте сами

using UnityEngine;

public class Tank : MonoBehaviour
{
    public float speed = 3f;
    public float turn = 90f;

    void Update()
    {
        // Стрелки вправо/влево: поворот вокруг оси y. Стрелка вверх: движение в направлении, куда направлен танк.
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Основы скриптинга в Unity