Menu
CoddyTech

Rückblick: FindNearest

Teil des Abschnitts Spielarchitektur in Unity der Unity-Journey von Coddy. Lektion 36 von 50.

challenge icon

Aufgabe

Mittel

Ein Reinigungsroboter sammelt Edelsteine und fährt dann zum Aufladen. Gem und ChargePad sind leere Markierungsskripte (bereit), und der Roboter hat MoveTo(point), das ihn schrittweise auf einen Punkt zubewegt und true zurückgibt, sobald er dort ist.

  • Schreibe in Helpers.cs eine statische Klasse Helpers mit einer generischen Methode FindNearest<T>(IEnumerable<T> items, Vector3 from) für einen beliebigen Komponententyp. Sie gibt das Element zurück, dessen Position am nächsten bei from liegt, oder null, wenn es keine Elemente gibt.
  • In Robot.cs steuert der Roboter in jedem Frame den nächstgelegenen Edelstein in der Szene an, ausgehend von seiner aktuellen Position, und zerstört den Edelstein, sobald er dort ankommt.
  • Wenn keine Edelsteine mehr übrig sind, steuert der Roboter das nächstgelegene ChargePad an. Bei seiner Ankunft gibt er einmal Charging aus und bleibt dort.

Verwende FindNearest sowohl für die Edelsteine als auch für die Ladepads. Drücke Play, beobachte den Roboter und klicke dann auf Check.

Probier es selbst

using System.Collections.Generic;
using UnityEngine;

// Helpers.FindNearest<T>: das Element, das einem Punkt am nächsten liegt, oder null

Alle Lektionen in Spielarchitektur in Unity