Menu
CoddyTech

Повторение: FindNearest

Часть раздела Архитектура игр в Unity путешествия по Unity на Coddy. Урок 36 из 50.

challenge icon

Задание

Средне

Робот-уборщик собирает драгоценные камни, а затем отправляется на зарядку. Gem и ChargePad — пустые скрипты-маркеры (готовые), а у робота есть MoveTo(point), которая перемещает его к точке со скоростью speed и возвращает true, когда он достигает её.

  • В Helpers.cs напишите статический класс Helpers с обобщённым методом FindNearest<T>(IEnumerable<T> items, Vector3 from) для любого типа компонента. Метод возвращает объект, чья позиция ближе всего к from, или null, если объектов нет.
  • В Robot.cs каждый кадр робот направляется к ближайшему драгоценному камню на сцене, отталкиваясь от своего текущего положения, и уничтожает его, когда добирается до него.
  • Когда драгоценных камней не останется, робот направляется к ближайшему ChargePad. По прибытии он один раз выводит в журнал сообщение Charging и остаётся там.

Используйте FindNearest и для драгоценных камней, и для зарядных площадок. Нажмите Играть, понаблюдайте за роботом, затем нажмите Проверить.

Попробуйте сами

using System.Collections.Generic;
using UnityEngine;

// Helpers.FindNearest<T>: ближайший к точке элемент или null

Все уроки раздела Архитектура игр в Unity