Скорость по диагонали
Часть раздела Основы скриптинга в Unity путешествия по Unity на Coddy. Урок 20 из 67.
Удерживайте одновременно клавиши со стрелками вправо и вверх, и исходные оси задают направление (1, 0, 1). Его длина, .magnitude, равна квадратному корню из 1 + 1, то есть примерно 1,41. Перемещаясь с его помощью, персонаж проходит по диагонали 1,41 единицы за то же время, за которое проходит 1 единицу прямо: на 41% быстрее.
.normalized возвращает копию вектора, направленного так же, но длиной ровно 1 единица: (1, 0, 1) превращается примерно в (0.71, 0, 0.71), а (0, 0, 5) — в (0, 0, 1). При умножении на скорость он перемещается с этой скоростью в любом направлении. Эта пчела летит к цветку со скоростью 2 единицы в секунду, независимо от того, далеко цветок или близко; без .normalized она летела бы тем быстрее, чем дальше находится цветок:
public Vector3 flower = new Vector3(4, 1, 3);
public float speed = 2f;
void Update()
{
Vector3 toFlower = flower - transform.position;
transform.position += toFlower.normalized * speed * Time.deltaTime;
}Vector3.zero.normalized остаётся равным (0, 0, 0), поскольку у нуля нет направления. v.normalized оставляет v без изменений; v.Normalize() изменяет сам v.
Задание
ЛегкоНапиши перемещение персонажа. Стрелки (или WASD), считываемые с помощью необработанных осей, перемещают его влево и вправо по x и вверх и вниз по z. Он движется со скоростью speed единиц в секунду в любом направлении, в том числе по диагонали, сразу начинает движение и останавливается, а без нажатых клавиш остается на месте.
Нажми Play, пройдись прямо и по диагонали, затем нажми Check.
Попробуйте сами
using UnityEngine;
public class Walker : MonoBehaviour
{
public float speed = 4f;
void Update()
{
// Стрелки или WASD: движение по осям x и z со скоростью speed, одинаковой и при движении по диагонали.
}
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы скриптинга в Unity
1Ваш первый скрипт
Привет, UnityРазместите кубДвигайте каждый кадрПоворачивайте каждую секундуУправляйте клавишамиПовторение: управляйте кубом2Инспектор
Поля инспектораSerializeFieldЧисла с плавающей точкой и MathfАтрибуты инспектораПовторение: лифт5Преобразования и иерархия
Родители и детиМасштабПосмотри на объектыДвигайся к точкеПовторение: Луна на орбите6Игровые объекты и компоненты
Ссылки в InspectorПолучение компонентаОтсутствующие компонентыДобавление компонентаRequireComponentПоказать и скрытьПовторение: выключатель света