Расстояние между объектами
Часть раздела Основы скриптинга в Unity путешествия по Unity на Coddy. Урок 21 из 67.
Vector3.Distance(a, b) — это расстояние между двумя точками в единицах измерения по прямой через все три оси. Это длина отрезка между ними, (a - b).magnitude, поэтому порядок a и b не имеет значения. Расстояние от (0, 0, 0) до (3, 0, 4) равно 5.
Если сравнить расстояние с числом, скрипт сможет определить, когда что-то находится рядом. Этот турист может согреть руки, только если находится не дальше 4 единиц от костра, положение которого задаёт Inspector:
public Vector3 campfire = new Vector3(3, 0, 4);
void Update()
{
float d = Vector3.Distance(transform.position, campfire);
if (d < 4f && Input.GetKeyDown(KeyCode.Space))
{
Debug.Log("You warm your hands");
}
}При вычислении расстояния учитывается и высота: турист, находящийся на 5 единиц выше костра, находится от него на расстоянии 5 единиц, а не 0. Если высоту учитывать не нужно, сравнивайте две точки с одинаковым значением y.
Задание
ЛегкоПутешественник пересекает болото. В пределах 3 единиц от центра болота, swamp (задаётся в Inspector), он движется с половиной своей speed; дальше — на полной скорости. Код движения уже написан: определите скорость для каждого кадра, не изменяя само поле speed.
Нажмите Play и пройдите через болото, затем нажмите Check.
Попробуйте сами
using UnityEngine;
public class Walker : MonoBehaviour
{
public float speed = 4f;
public Vector3 swamp = new Vector3(0, 0.5f, 0);
void Update()
{
float s = speed;
// На расстоянии до 3 единиц от болота двигайся с половинной скоростью.
Vector3 direction = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));
transform.position += direction.normalized * s * Time.deltaTime;
}
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Основы скриптинга в Unity
1Ваш первый скрипт
Привет, UnityРазместите кубДвигайте каждый кадрПоворачивайте каждую секундуУправляйте клавишамиПовторение: управляйте кубом4Векторы
Сложение векторовНаправленияЛокальное и мировое пространствоСкорость по диагоналиРасстояние между объектамиVector3 — это структураПовторение: пилот дрона2Инспектор
Поля инспектораSerializeFieldЧисла с плавающей точкой и MathfАтрибуты инспектораПовторение: лифт5Преобразования и иерархия
Родители и детиМасштабПосмотри на объектыДвигайся к точкеПовторение: Луна на орбите6Игровые объекты и компоненты
Ссылки в InspectorПолучение компонентаОтсутствующие компонентыДобавление компонентаRequireComponentПоказать и скрытьПовторение: выключатель света