Menu
CoddyTech

Revisão: mais próximo ao alcance

Parte da seção Arquitetura de Jogos no Unity do Journey de Unity da Coddy. Lição 11 de 64.

Este capítulo usou interfaces para que um único script possa funcionar com coisas que não compartilham nada além de um método. A tecla de interação agora seleciona a mais próxima delas.

challenge icon

Desafio

Fácil

A tecla Espaço deve usar o objeto mais próximo, não o primeiro.

  1. Em Interactor, antes do loop, adicione IInteractable nearest = null; e float best = Mathf.Infinity;.
  2. No loop, mantenha o objeto cuja Vector3.Distance até o jogador seja menor que best, junto com sua distância.
  3. Após o loop, chame nearest.Interact() se nearest não for null.

Pressione “Jogar”, fique entre o baú e a alavanca e pressione Espaço: a alavanca será acionada. Depois, pressione “Verificar”.

Experimente você mesmo

using UnityEngine;
using UnityEngine.InputSystem;

// Space usa a primeira coisa ao alcance.
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 iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Arquitetura de Jogos no Unity

Pratique por conta própria: Playground de Unity