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.
Défi
FacileEspace doit utiliser l’objet le plus proche, et non le premier.
- Dans
Interactor, avant la boucle, ajouteIInteractable nearest = null;etfloat best = Mathf.Infinity;. - Dans la boucle, conserve tout objet dont la distance au joueur calculée avec
Vector3.Distanceest inférieure àbest, ainsi que sa distance. - Après la boucle, appelle
nearest.Interact()sinearestn’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;
}
}
}
}
}
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
1Des composants, pas des hiérarchies
De petits composantsUn script de base pour les ennemisComposants abstraitsDes composants qui fonctionnent ensembleRécapitulatif : tourelle modulaireRécapitulatif : canon double4Données sérialisées
Classes sérialisablesListes dans l’InspecteurÉnumérations dans l’InspecteurRécapitulatif : table de butinRécapitulatif : tirer le butin2Les interfaces dans Unity
IDamageableInterfaces et TryGetComponentGetComponentsRécapitulatif : touche d’interactionLe plus proche à portée5ScriptableObjects
Ressources de donnéesStatistiques des armesParamètres partagésSauver le ventLes vagues comme donnéesRécapitulatif : base de données des objetsRécapitulatif : acheter dans la boutique3Événements
Les événements C# dans UnityS’abonner dans OnEnableChamps UnityEventLes événements pilotent l’interfaceRécapitulatif : fenêtre de succèsRécapitulatif : minuteur de la fenêtreEntraînez-vous par vous-même : Playground Unity