Menu
CoddyTech

Повторение: ближайший в пределах досягаемости

Часть раздела Архитектура игр в Unity путешествия по Unity на Coddy. Урок 11 из 64.

В этой главе использовались интерфейсы, чтобы один скрипт мог работать с объектами, у которых общего только один метод. Теперь клавиша взаимодействия выбирает ближайший из них.

challenge icon

Задание

Легко

Клавиша Space должна использовать ближайший объект, а не первый.

  1. В Interactor перед циклом добавь IInteractable nearest = null; и float best = Mathf.Infinity;.
  2. В цикле сохраняй объект, расстояние от которого до игрока, вычисленное с помощью Vector3.Distance, меньше best, а также его расстояние.
  3. После цикла вызови 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;
                }
            }
        }
    }
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Архитектура игр в Unity

Потренируйтесь самостоятельно: Песочница Unity