Локальное и мировое пространство
Часть раздела Основы скриптинга в 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 поворачивается вместе с ним.
Задание
ЛегкоДобавь танку управление: стрелка вправо поворачивает его вправо, а стрелка влево — влево вокруг его оси y со скоростью turn градусов в секунду. Стрелка вверх ведёт его вперёд, в направлении, куда он смотрит, со скоростью speed единиц в секунду. Сам по себе поворот не перемещает танк.
Нажми Play, поверни и проедь вперёд, затем нажми Check.
Попробуйте сами
using UnityEngine;
public class Tank : MonoBehaviour
{
public float speed = 3f;
public float turn = 90f;
void Update()
{
// Стрелки вправо/влево: поворот вокруг оси y. Стрелка вверх: движение в направлении, куда направлен танк.
}
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы скриптинга в Unity
1Ваш первый скрипт
Привет, UnityРазместите кубДвигайте каждый кадрПоворачивайте каждую секундуУправляйте клавишамиПовторение: управляйте кубом4Векторы
Сложение векторовНаправленияЛокальное и мировое пространствоСкорость по диагоналиРасстояние между объектамиVector3 — это структураПовторение: пилот дрона2Инспектор
Поля инспектораSerializeFieldЧисла с плавающей точкой и MathfАтрибуты инспектораПовторение: лифт5Преобразования и иерархия
Родители и детиМасштабПосмотри на объектыДвигайся к точкеПовторение: Луна на орбите6Игровые объекты и компоненты
Ссылки в InspectorПолучение компонентаОтсутствующие компонентыДобавление компонентаRequireComponentПоказать и скрытьПовторение: выключатель света