Расстояние между объектами
Часть раздела Основы скриптинга в Unity путешествия по Unity на Coddy. Урок 28 из 85.
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.
Задание
ЛегкоЗамедли движение персонажа в болоте вдвое.
- Ниже
float s = speed;напишиif (Vector3.Distance(transform.position, swamp) < 3f). - Внутри него присвой
s = speed / 2;. Оставь полеspeedи строки движения без изменений.
Нажми «Играть» и пройди прямо через болото: персонаж замедлится в нём. Затем нажми «Проверить».
Попробуйте сами
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Основы C# в Unity
Привет, UnityПеременныеДля дробных чисел нужна fТекст в консолиПеременные, которые запоминаютЕсли и иначеСравнение чиселПовторение: сборщик монет7Циклы и методы
Повторение с forЦиклы внутри цикловНапишите методМетоды, которые возвращают значениеМассивыПовторение: лестница10Поиск объектов
Поиск по имениТегиПоиск по типуСсылки лучше поискаNull в UnityПовторение: ближайшая монета13Проект: уворачиваемся от блоков
БегунБлоки с неба2Заставь двигаться
Размести кубДвигай каждый кадрПоворачивай каждую секундуУправляй клавишамиПовторение: веди куб5Векторы
Сложение векторовНаправленияЛокальное и мировое пространствоСкорость по диагоналиРасстояние между объектамиVector3 — это структураПовторение: пилот дрона8Игровые объекты и компоненты
Ссылки в InspectorПолучение компонентаОтсутствующие компонентыДобавление компонентаRequireComponentПоказ и скрытиеПовторение: выключатель светаПотренируйтесь самостоятельно: Песочница Unity