Повторение: ближайший в пределах досягаемости
Часть раздела Архитектура игр в Unity путешествия по Unity на Coddy. Урок 11 из 64.
В этой главе использовались интерфейсы, чтобы один скрипт мог работать с объектами, у которых общего только один метод. Теперь клавиша взаимодействия выбирает ближайший из них.
Задание
ЛегкоКлавиша Space должна использовать ближайший объект, а не первый.
- В
Interactorперед циклом добавьIInteractable nearest = null;иfloat best = Mathf.Infinity;. - В цикле сохраняй объект, расстояние от которого до игрока, вычисленное с помощью
Vector3.Distance, меньшеbest, а также его расстояние. - После цикла вызови
nearest.Interact(), еслиnearestне равен null.
Нажми «Играть», встань между сундуком и рычагом и нажми Space: рычаг сработает. Затем нажми «Проверить».
Попробуйте сами
using UnityEngine;
using UnityEngine.InputSystem;
// Space взаимодействует с первым объектом в пределах досягаемости.
public class Interactor : MonoBehaviour
{
public float reach = 1.5f;
void Update()
{
if (Keyboard.current.spaceKey.wasPressedThisFrame)
{
foreach (Collider c in Physics.OverlapSphere(transform.position, reach))
{
if (c.TryGetComponent(out IInteractable thing))
{
thing.Interact();
return;
}
}
}
}
}
В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Архитектура игр в Unity
1Компоненты, а не иерархии
Небольшие компонентыБазовый скрипт врагаАбстрактные компонентыКомпоненты работают вместеПовторение: модульная турельПовторение: спаренная пушка4Сериализованные данные
Сериализуемые классыСписки в инспектореПеречисления в инспектореПовторение: таблица добычиПовторение: определяем добычу2Интерфейсы в Unity
IDamageableИнтерфейсы и TryGetComponentGetComponentsПовторение: клавиша взаимодействияПовторение: ближайший в пределах досягаемости5ScriptableObjects
Ресурсы данныхХарактеристики оружияОбщие настройкиСохраняем ветерВолны как данныеПовторение: база предметовПовторение: покупка в магазинеПотренируйтесь самостоятельно: Песочница Unity