Menu
CoddyTech

Гонка на время

Часть раздела Создание настоящих игр путешествия по Unity на Coddy. Урок 55 из 56.

Забег на время по саду. Бегун начинает на одном конце с десятью секундами на таймере и должен добраться до белой цели на дальнем конце, обогнув живую изгородь, прежде чем истечёт время. Золотые часы по пути добавляют несколько секунд. Когда времени почти не остаётся, таймер становится красным; когда время истекает, трасса начинается заново. Доберись до цели вовремя, и игра перейдёт к сцене Finish.

Напиши два скрипта: Runner для бегуна с компонентом CharacterController и Race для объекта Race.

challenge icon

Задание

Сложно

В сборке две сцены: Track и Finish. На трассе часы помечены тегом Clock, а цель — тегом Goal; оба объекта являются триггерами.

В Inspector задаются значения speed (6), gravity (-9.81) и race (скрипт Race) для Runner.

  • Действие Move проекта перемещает бегуна со скоростью speed единиц в секунду: вправо и влево вдоль оси x, вверх и вниз вдоль оси z. Он падает под действием gravity и перемещается только с помощью controller.Move, поэтому изгородь его останавливает.
  • При столкновении с часами они исчезают, а к времени гонки добавляется бонус. При столкновении с целью гонка завершается.

В Inspector задаются значения timeLimit (10), bonus (3) и timeText для Race.

  • Оставшееся время начинается со значения timeLimit и уменьшается на величину прошедшего реального времени. timeText отображает его с одним десятичным знаком, например Time: 7.4, белым цветом, а когда остаётся меньше 3 секунд — красным (Color.red).
  • Каждые часы добавляют bonus секунд.
  • Когда время достигает 0, выведите в журнал Time's up! и загрузите трассу заново, с самого начала.
  • Если гонка завершена вовремя, выведите в журнал оставшееся время, например Finished with 4.2 s left, и загрузите сцену Finish.

Нажмите Играть и обгоните часы, затем нажмите Проверить.

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

using UnityEngine;
using UnityEngine.SceneManagement;
using TMPro;

public class Race : MonoBehaviour
{
    public float timeLimit = 10f;
    public float bonus = 3f;
    public TMP_Text timeText;
}
quiz iconПроверьте себя

В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.

Все уроки раздела Создание настоящих игр