Локальное и мировое пространство
Часть раздела Основы скриптинга в Unity путешествия по Unity на Coddy. Урок 26 из 85.
У объекта есть собственные направления, как и направления мира. 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 поворачивается вместе с ним.
Задание
ЛегкоЗадай танку управление как у танка: поворачивайся на месте, двигайся в направлении, куда он смотрит.
- В
Update(), пока удерживается клавиша со стрелкой вправо, выполняйtransform.Rotate(0, turn * Time.deltaTime, 0);, а для стрелки влево используй-turn. - Пока удерживается клавиша со стрелкой вверх, выполняй
transform.Translate(Vector3.forward * speed * Time.deltaTime);.
Нажми «Играть», поворачивай и двигайся: танк едет туда, куда направлен его нос. Затем нажми «Проверить».
Попробуйте сами
using UnityEngine;
public class Tank : MonoBehaviour
{
public float speed = 3f;
public float turn = 90f;
void Update()
{
// Стрелки вправо/влево: поворачивать вокруг оси y. Стрелка вверх: ехать в направлении, куда направлен танк.
}
}
Все уроки раздела Основы скриптинга в Unity
1Основы C# в Unity
Привет, UnityПеременныеДля дробных чисел нужна fТекст в консолиПеременные, которые запоминаютЕсли и иначеСравнение чиселПовторение: сборщик монет7Циклы и методы
Повторение с forЦиклы внутри цикловНапишите методМетоды, которые возвращают значениеМассивыПовторение: лестница10Поиск объектов
Поиск по имениТегиПоиск по типуСсылки лучше поискаNull в UnityПовторение: ближайшая монета13Проект: уворачиваемся от блоков
БегунБлоки с неба2Заставь двигаться
Размести кубДвигай каждый кадрПоворачивай каждую секундуУправляй клавишамиПовторение: веди куб5Векторы
Сложение векторовНаправленияЛокальное и мировое пространствоСкорость по диагоналиРасстояние между объектамиVector3 — это структураПовторение: пилот дрона8Игровые объекты и компоненты
Ссылки в InspectorПолучение компонентаОтсутствующие компонентыДобавление компонентаRequireComponentПоказ и скрытиеПовторение: выключатель светаПотренируйтесь самостоятельно: Песочница Unity