Menu
CoddyTech

Le plus proche à portée

Fait partie de la section Architecture de jeu dans Unity du Journey Unity de Coddy. Leçon 11 sur 64.

Ce chapitre a utilisé des interfaces afin qu’un script puisse fonctionner avec des éléments qui n’ont en commun qu’une méthode. La touche d’interaction sélectionne désormais l’élément le plus proche parmi eux.

challenge icon

Défi

Facile

Espace doit utiliser l’objet le plus proche, et non le premier.

  1. Dans Interactor, avant la boucle, ajoute IInteractable nearest = null; et float best = Mathf.Infinity;.
  2. Dans la boucle, conserve tout objet dont la distance au joueur calculée avec Vector3.Distance est inférieure à best, ainsi que sa distance.
  3. Après la boucle, appelle nearest.Interact() si nearest n’est pas null.

Appuie sur « Jouer », place-toi entre le coffre et le levier, puis appuie sur Espace : le levier est actionné. Ensuite, clique sur « Vérifier ».

Essayez vous-même

using UnityEngine;
using UnityEngine.InputSystem;

// La touche Espace utilise le premier objet à portée.
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 iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Architecture de jeu dans Unity

Entraînez-vous par vous-même : Playground Unity