Ripasso: FindNearest
Fa parte della sezione Architettura dei giochi in Unity del percorso Unity di Coddy. Lezione 36 di 50.
Sfida
MedioUn robot addetto alle pulizie raccoglie gemme, poi va a ricaricarsi. Gem e ChargePad sono script marcatore vuoti (pronti), e il robot ha MoveTo(point), che lo sposta verso un punto alla velocità speed e restituisce true una volta arrivato.
- In
Helpers.cs, scrivi una classe staticaHelperscon un metodo genericoFindNearest<T>(IEnumerable<T> items, Vector3 from)per qualsiasi tipo di componente. Restituisce l'elemento la cui posizione è più vicina afrom, oppure null quando non ci sono elementi. - In
Robot.cs, a ogni frame il robot si dirige verso la gemma più vicina nella scena, partendo da dove si trova, e distrugge la gemma quando la raggiunge. - Quando non rimangono gemme, il robot si dirige verso il
ChargePadpiù vicino. All'arrivo registraCharginguna volta e resta lì.
Usa FindNearest sia per le gemme sia per le piattaforme. Premi Play, osserva il robot, poi Check.
Provalo tu
using System.Collections.Generic;
using UnityEngine;
// Helpers.FindNearest<T>: l'elemento più vicino a un punto, oppure null
Tutte le lezioni di Architettura dei giochi in Unity
1Componenti, non gerarchie
Componenti piccoliUno script base per i nemiciComponenti astrattiComponenti che collaboranoRiepilogo: torretta modulare4Dati serializzati
Classi serializzabiliListe nell'InspectorEnum nell'InspectorRiepilogo: tabella del bottino7Macchine a stati
Gli stati come classiUna macchina a statiTransizioniIntelligenze dei nemiciRiepilogo: stati della porta10Progetto: Sopravvissuto nell’arena
L’eroeTipi di nemici5ScriptableObjects
Asset di datiStatistiche delle armiImpostazioni condiviseOndate come datiRiepilogo: database degli oggetti8Codice riutilizzabile
Metodi di estensioneUn singleton genericoFunzioni di supporto genericheRipasso: FindNearest