Этот таймер отслеживает время, отведенное игроку на выполнение задания, и определяет поражение при его истечении. Он визуально представлен как полоса, уменьшающаяся со временем и меняющая цвет.
Создание объекта таймера
- Создайте в сцене новый 3D-объект — куб. Назовите его «Таймер».
- Установите его позицию: X = 0, Y = 0, Z = 0.
- Измените масштаб куба, чтобы он выглядел как полоса: X = 8, Y = 1, Z = 0.1. Значение Z незначительно влияет на отображение в 2D-режиме.
- Поднимите куб по оси Y на 3.3 единицы для лучшего визуального восприятия.
- Удалите компонент Box Collider.
- Создайте новый материал (Create Material), назовите его «Таймер» и примените к кубу. Задайте ему темный цвет, например, RGB(0, 169, 255).
Написание скрипта таймера
Создайте новый скрипт C# и назовите его «Таймер». Ниже приведён упрощённый код для лучшего понимания:
// Код скрипта таймера (упрощенная версия для лучшего понимания)
using UnityEngine;
public class Timer : MonoBehaviour
{
public GameObject mainCB; // Главный объект игры
public Color defaultColor = new Color(0, 169f/255f, 1); // Цвет по умолчанию
public Color changeColor = new Color(255f/255f, 148f/255f, 238f/255f); // Цвет при изменении
private Color lastColor;
public bool ose = false;
void Start()
{
lastColor = GetComponent<Renderer>().material.color;
}
void Update()
{
if (GetComponent<Renderer>().material.color != lastColor)
{
transform.position = new Vector3(0, transform.position.y, transform.position.z);
GetComponent<Renderer>().material.color = defaultColor;
lastColor = defaultColor;
}
else
{
transform.position = new Vector3(transform.position.x - 0.1f, transform.position.y, transform.position.z);
if (transform.position.x < -8.5f)
{
ose = true;
}
if (transform.position.x < 1.5f)
{
GetComponent<Renderer>().material.color = Color.Lerp(lastColor, changeColor, (1.5f - transform.position.x) / 1.5f);
lastColor = GetComponent<Renderer>().material.color;
}
}
}
}
Скрипт использует два цвета: цвет по умолчанию и цвет, на который меняется цвет таймера. Переменные mainCB хранит ссылку на главный объект игры, а lastColor – текущий цвет.
Скрипт:
- Записывает начальный цвет в lastColor.
- Проверяет изменение цвета главного куба. Если цвет изменился, таймер возвращается в исходное положение, а его цвет сбрасывается.
- Двигает таймер по оси X влево.
- При X < -8.5 игра заканчивается (ose = true).
- При X < 1.5 начинается плавное изменение цвета с помощью Color.Lerp, используя текущий цвет как начальный.
Настройка таймера в Unity
- Добавьте компонент скрипта «Таймер» к объекту «Таймер».
- Установите два цвета: цвет по умолчанию (RGB(0, 169, 255)) и цвет изменения (RGB(255, 148, 238)).
- Укажите в инспекторе ссылку на главный объект игры (Main CB).
Тестирование
Запустите игру и проверьте работоспособность таймера. При правильном нажатии на блоки (предполагается наличие в игре механики, изменяющей цвет главного объекта) таймер должен возвращаться в исходное положение. При неправильном нажатии или истечении времени таймер должен достигнуть конца, и игра должна завершиться.
В этом уроке создан функциональный таймер для игр на Android в Unity 5. Таймер визуально отображается как полоса, уменьшающаяся со временем и меняющая цвет, добавляя игровой динамики. Логика скрипта обрабатывает действия игрока и определяет поражение при истечении времени.