Как сделать таймер в юнити

Как сделать таймер в юнити

using UnityEngine ;
using System.Collections ;

public class TimerLesson : MonoBehaviour <
public int xs, ys, ;
public int xm, ym ;
//do not edit
public int timersecond ;
public float secondgametime = 0 ;
public float secondgametimereset = 0 ;
public float minedgametime = 0 ;
public float minegametimereset = 0 ;

//up game timer translate in second
secondgametime += Time. deltaTime ;
if ( secondgametime >= 2.5 ) <
timersecond += 1 ;
>
if ( secondgametime >= 2.5 ) <
secondgametime = secondgametimereset ;
>
//up second time translate into minutes
if ( timersecond >= 60 ) <
minedgametime += 1 ;
timersecond = 0 ;
>
if ( minedgametime >= 60 ) <
minedgametime = minegametimereset ;
>
>

стартовые числа для счётчика
public int timersecond;
public float secondgametime = 0;
public float secondgametimereset = 0;
public float minedgametime = 0;
public float minegametimereset = 0;

Рассчитываем счётчик для минут

Вывод Чисел на экран, причём числа не будут плясать по экрану,на разных по размеру экранам, а будут фиксироваться.

Дальше вешаем скрипт на камеру, в инспекторе скрипта пишем координаты GUI 700,10 и 670,10 или же свои
Вывод числа не как в Unity таймере 1.343453 а культурные целые числа
Так же хочу отметить что если написать вместо апдейт, фиксапдейт, то скрипт на ос андроид будет работать немного точнее

версия 2 с подробным описанием в более оптемизированном скрипте

По этой ссылке скачивайте Asset и импортируете его в Unity
https://yadi.sk/d/X56YqD3JeoToL
Дальше откройте проект, он называется LessonTimer
Заходим папку скрипт и отрываем файл под названием TimerEmult
И так что мы видим
13d189b5afd0
Поскольку описание в скрипте есть я не буду сильно на этом останавливаться..
Дальше вешаем наш скрипт на камеру
58bb876b8e71
Запускаем и видим что отсчёт идёт
e91d2f9b40ba
Дальше нам к примеру надо сделать что бы секунды и минуты начинали отчёт с 20 секунд 30 минут
Идём в Inspector
Пишем на против поля Timersecond 10, а на против поля Minedgametime 30
126a32f61462
запускаем и видим отсчёт в секундах начался с 10 секунд, а отчёт минут с 30 минут.
Собственно сам скрипт кому лень скачивать)))

Источник

Знакомство с Timeline в Unity

[В туториале около 50 МБ изображений, в том числе анимированных GIF]

Чтобы рассказать часть сюжета игры или увлечь игрока, разработчики часто используют катсцены. В некоторых играх создают специально отрендеренные анимированные сцены с моделями высокой детализации, в других же применяют настоящие внутриигровые модели. Благодаря использованию внутриигровых моделей можно сэкономить много средств и времени, потому что вам не придётся создавать новые модели, риги и анимации исключительно для катсцен. Но даже если вы используете уже готовые модели, то это не означает, что нужно жертвовать спецэффектами или драматизмом! В Unity есть мощный инструмент, позволяющий создавать захватывающие катсцены — Unity Timeline!

В этом туториале вы познакомитесь с Timeline и узнаете, как создавать катсцены с анимациями и сменами камер.

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

Скачайте проект-заготовку и готовый проект отсюда.

Откройте файл Starter Project и загрузите сцену Main. Она будет нашим фундаментом. В ней есть герой, стоящий на башне и глядящий на мир:

5fc7a6c5cd759ce8aa9c08509db3830d

С вашей помощью он сможет спрыгнуть с башни, развернуться, подойти к сундуку с сокровищами и пинком открыть его. При этих анимациях камера тоже будет менять своё положение. Вот, как выглядит готовая сцена:

af75c6b3fbbe8e5e5ef322edb65b96d9

Что же такое Timeline?

В этом туториале мы будем работать с Unity Timeline — но что такое timeline? Timeline — это GameObject с компонентом timeline, который можно редактировать в окне Unity Timeline, управляющем ключевыми кадрами анимации и циклами жизни объектов. При создании катсцены с помощью Unity Timeline, мы задаём ключи анимации и определяем, когда они должны сработать. В этом туториале мы также будем использовать AnimationController, который можно воспринимать как надмножество ключевых кадров анимации.

Когда персонаж выполняет анимацию, например, ходьбы, каждой отдельной подвижной вершине объекта необходимо указать её путь. В этом туториале мы не будем заниматься созданием модели и риггингом анимаций — всё уже сделано за нас. Но полезно будет знать, что когда вы вручную задаёте ключевой кадр анимации или используете анимацию AnimationController, то по сути они являются одним и тем же: позицией объектов в заданный момент времени. Timeline управляет всеми этими движениями для создания сцены. Всё это вы поймёте, когда начнёте разбираться в Unity Timeline.

Но прежде чем погрузиться в изучение, полезно сделать краткий обзор окна Timeline. Посмотрите на изображение и прочитайте описания под цифрами:

27591ef57ff5efa79752c74bdbc99906

Свет, камера, МОТОР!

Загрузив основную сцену, нажмите Play. Вы должны увидеть героя, стоящего на вершине башни:

57bad77b9bb301ff866534b848e143c8

Это анимация по умолчанию, заданная в Animation controller. В этом туториале мы будем использовать заранее созданные анимации, поэтому вам не нужно беспокоиться о внутреннем устройстве моделей, анимаций или контроллеров. Но если вы хотите разобраться в этом процессе, то можете изучить наш туториал Introduction to Unity Animation.

Создание GameObject типа Timeline

Первым шагом будет создание GameObject Timeline. Создайте пустой GameObject, нажав правой клавишей мыши (на Mac — с зажатым Command) на окне Hierarchy и выбрав Create Empty. Так мы добавим в сцену GameObject и выберем его:

b50b0dcd1373675793c2ad2b912e8119

Не снимая выделения с GameObject, откройте меню Window и выберите Timeline. Откроется окно Timeline. Нажмите на кнопку Create, откроется диалоговое окно Save. Измените название файла на Timeline и нажмите на Save:

6cd90a840183dae9b1ceeb36ac181325

Переименуйте GameObject в Timeline, щёлкнув по нему, нажав клавишу F2 и введя Timeline:

909b3919810d8d85ccaa55866aa24aad

Мы создали GameObject Timeline, который будет координировать все анимации и смены камеры в катсцене. Внутри движка Unity сохранил на диск файл ассета под названием Timeline.playable. В GameObject Timeline Unity добавил компоненты Playable Director и Animator.

Компонент Playable Director содержит поле Playable, привязанное к только что сохранённому нами ассету Timeline. Добавленный Unity компонент Animator в теории должен позволить нам анимировать GameObject Timeline, но мы этого делать не будем, так что можно просто её проигнорировать.

Прежде чем двигаться дальше, я хочу перетащить вкладку Timeline в нижнюю часть экрана. Это позволит нам одновременно открыть окна Scene и Timeline:

15f7caf00a0c02304d0b303475ea64a6

Выберите GameObject Timeline и вернитесь в окно Timeline. На данный момент нам есть дорожка Animation Track для GameObject Timeline. Она нам не понадобится, поэтому можно выбрать её и нажать Delete, чтобы удалить:

78caf5d9a6a19b7f9e4a0416839ed893

Анимируем прыжок!

Теперь мы готовы приступить к анимациям. Разверните GameObject Hero, чтобы увидеть GameObject Model. Выберите GameObject Timeline. Перетащите GameObject Model в окно Timeline; при этом откроется меню дорожки, поэтому выберите Animation Track. Повторите этот шаг для GameObject Hero:

75353aa08cbffd2a4a73d577ad9659e7

Примечание: мы добавили и Hero, и Model для того, чтобы правильно использовать ноль локального пространства. GameObject Hero — это контейнер для GameObject Model, что позволяет воспроизводить анимации, не влияя на позицию, с которой они воспроизводятся. Когда нам нужно будет перемещать героя, мы будем анимировать GameObject Hero. Когда героя нужно анимировать — что можно делать и во время движения — мы воспользуемся GameObject Model. Без этой родительско-дочерней связи воспроизводимые объектом Model анимации будут неправильно переопределять параметры движения объекта Hero, если не настроить его в качестве дочернего элемента.

Записываем ключевые кадры

Поскольку дорожка GameObject Hero представляет собой позицию героя, нам нужно задать его позицию в качестве начального ключевого кадра.

Вернитесь в окно Timeline и нажмите кнопку Record на дорожке Hero, чтобы завершить запись. Так мы добавили ключевой кадр для начальной позиции героя:

0c06267e22f895f6f5ef74c9fa28bff7

В нашем проекте герой уже находится в позиции, с которой должен начинать. Однако пока мы не изменим позицию, она не будет зарегистрирована при записи как ключевой кадр. Поэтому если вам когда-нибудь понадобится задать ключевой кадр при записи для позиции, в которой уже есть ключевой кадр, просто переместите его и верните обратно, чтобы он зарегистрировался.

Далее нам нужно, чтобы герой подождал 100 кадров, прежде чем спрыгнет с башни. В настоящий момент мы задали только начальную позицию героя, но нам нужно задать герою ту же самую позицию (т.е. на вершине башни) через 100 кадров. В противном случае Unity сразу же начнёт интерполировать движение.

Как и раньше, выберите GameObject Timeline, однако на этот раз нужно нажать на поле кадров вверху окна и ввести «100». Так мы переместим ключевой кадр в кадр 100.

b9df816295a4a093690123d7c0aad18e

Итак, мы настроили начальный ключевой кадр Hero и готовы продолжить работу с анимациями.

Добавляем анимационные клипы

Задание данных позиции

Сначала нам нужно задать данные позиции.

Нажмите на GameObject Timeline, чтобы выбрать его. В окне Timeline добавьте к дорожке Model анимацию Animation, нажав правой клавишей мыши (на Mac — щёлкнув с зажатым Command) на дорожку Model и выбрав Add From Animation Clip. Теперь выберите анимацию Idle:

1dae61ba06cdce0322107b23ff6f37a0

Далее мы анимируем прыжок героя с башни, но сначала нам нужно переместить его вверх и над перилами, а затем вниз к земле.

Для этого сначала выберите окно Timeline, а затем перейдите к кадру 138. Нажмите в дорожке Hero кнопку Record. Теперь выберите GameObject Hero. В поле Transform окна Inspector, задайте Y Position значение 3.934, а Z Position — значение 1.97.

Вернитесь в окно Timeline и перейдите к кадру 176. Снова выберите GameObject Hero и задайте Y Position значение 0, а Z Position значение 5.159. Завершите запись, нажав на кнопку Record:

25a4abf2175ff8db75ba9f84617592d9

Сохраните сцену и нажмите Play, чтобы увидеть результат своей работы!

3b72dba221854fa69d6026f3e752d33d

Мы задали данные позиции, но не выполняемые с ними анимации. Сейчас мы займёмся этим.

Выбрав окно Timeline, нажмите правой клавишей мыши (на Mac щёлкните с зажатым Command) на дорожке Model и щёлкните на Add From Animation Clip, а затем выберите Jump. Так вы добавите анимацию Jump сразу после анимации Idle.

Перетащите правую сторону анимации Jump, чтобы она находилась в кадре 176. Теперь мы добавим ещё один Animation Clip, но на этот раз мы будем добавлять анимацию Land (её длину изменять не нужно, просто добавьте её):

4fcd59386cf3bb429e88dfbd43d9eb2c

Сохраните сцену, нажмите Play и посмотрите на результат!

4ecdb1a6e1251571174489fda2781e60

Добавляем камеры

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

В окне Hierarchy переименуйте MainCamera в Camera1. Выберите GameObject Timeline. Перетащите Camera1 в окно Timeline, при этом откроется меню выбора дорожки; выберите Activation Track. Перетащите полосу Active дорожки Camera1 так, чтобы она заканчивалась на кадре 157:

9649ba9949b1ab49a1a35e1ebaf6402f

Подсказка: маркер текущего кадра можно задавать с помощью поля счётчика кадров в Timeline Inspector. Если установить маркер на кадр, в который вы хотите перетащить дорожку, то дорожка прикрепится к маркеру кадра.

Активностью или неактивностью GameObject во время сцены управляет Activation Track. Наша основная камера теперь отключится после кадра 157. Нажмите Play и посмотрите на результат:

30dd8728a41999eb04bbc442a4a608dc

Теперь мы добавим ещё одну камеру, только она будет смотреть сверху вниз, чтобы показать героя после прыжка через перила башни.

В окне Hierarchy выберите Camera1 и создайте её дубликат, нажав Control-D (Command-D на Mac). Переименуйте дубликат в Camera2 и отключите его.

В этом туториале мы используем ещё две камеры, поэтому создадим их сейчас, повторив тот же алгоритм; переименуйте их в Camera3 и Camera4 и отключите. После этого все игровые объекты Camera, кроме Camera1, должны оказаться отключенными. Вот, как должна выглядеть иерархия:

1ac49ef6c59edbcdc0c13d244044c43f

Теперь мы расположим Camera2. Выберите Camera2 и в поле Transform окна Inspector задайте Y Position значение 10.75, а Z Position значение 2.84. Параметру X Rotation задайте значение 79.5:

4530245d2df0228ca5729db4d55630c9

Что касается Camera1, то выберите окно Timeline и перетащите в него из Hierarchy объект Camera2; при этом снова появится меню выбора дорожки, поэтому выберите Activation Track. Перетащите полосу Active так, чтобы она начиналась сразу после завершения активации Camera1 (кадр 158). Перетащите правую сторону дорожки Active для Camera2 так, чтобы она заканчивалась на кадре 216.

Сохраните сцену, нажмите Play и понаблюдайте за сменой камер в вашей сцене.

67562616913b51e0bf42e7cb68cf648f

Настало время добраться до сокровища!

Смотрим на сундук

Теперь, когда наш герой приземлился на землю, он должен повернуться к сундуку с сокровищами и начать идти.

Выберите GameObject Timeline и установите кадр 202. Нажмите на кнопку Record в дорожке Hero, чтобы начать запись.

Примечание: задание ключевых кадров позиции и поворота происходит независимо друг от друга. Раньше, когда мы задавали начальную позицию героя, ключевой кадр для поворота не сохранялся, поэтому нам нужно задать новый кадр, прежде чем перейти к нужному повороту в направлении сокровища.

Кроме того, герой должен в этот момент находиться в состоянии ожидания, поэтому добавьте в дорожку Model Animation Track анимацию Idle и сделайте так, чтобы она длилась до кадра 216:

2a2cc9f3c2b9309b71f563b9409a1bc0

Итак, наш герой приземлился и готов искать сокровище. Настало время направиться к нему и открыть сундук!

Подсказка: если дорожка Timeline становится слишком большой, то можно покрутить колесо мыши, чтобы изменить его масштаб. Для перемещения влево или вправо, нажмите и удерживайте среднюю клавишу мыши, перемещая её влево или вправо.

Приближаемся к сокровищу

Выберите GameObject Timeline и установите кадр 216. Нажмите на кнопку Record на дорожке Hero, чтобы начать запись.

Выберите GameObject Hero и в поле Transform окна Inspector задайте X Position значение -1, а затем снова вернитесь к 0, чтобы установить ключевой кадр начальной позиции. Далее на Timeline выберите на дорожке Hero кадр 361.

Вернитесь к GameObject Hero и в поле Transform окна Inspector задайте X Position значение -6. Вернитесь к дорожке Hero и завершите запись.

Наконец задайте объекту Model анимацию Walk, выполнив те же действия, что и раньше, а затем растяните его до кадра 361:

9af24ef3ab3b37448c18d1a76650ef15

Вы можете заметить, что герой как будто проходит сквозь сокровище, но на самом деле это проблема с предварительным просмотром Timeline, потому что, как мы вскоре увидим, герой подходит прямо к сундуку и останавливается.

Чтобы камера Camera2 не следила за всем путём героя, теперь мы можем использовать камеру Camera3 для съёмки из-за спины героя.

Для этого в основном меню окна Hierarchy выберите и перетащите Camera3 на GameObject Model, который находится внутри GameObject Hero, чтобы сделать камеру его дочерним элементом.

Задайте Camera3 позицию (X:0, Y:2.06, Z:-2.5). Задайте ей поворот (X:0, Y:0, Z:0). Иерархия должна выглядеть следующим образом:

949c0176c544e6fcfaf58f04cd295e38

Благодаря тому, что Camera3 теперь является дочерним элементом GameObject Model, она будет повторять все движения GameObject Model, глядя на него сзади. Однако для Camera3 по-прежнему нужна дорожка активации, чтобы она активировалась в нужное время.

Перетащите GameObject Camera3 на Timeline и выберите Activation Track, как мы делали это с Camera1 и Camera2. Задайте в качестве начального кадра Camera3 конечный кадр Camera2, а в качестве конечного кадра Camera3 задайте 361:

fbee67de1449ff7f4cc0e4390c398fef

Теперь сохраните сцену, нажмите Play и посмотрите, как всё получается:

a70cfb30f5c7f7eb24e2946503f08c7f

Мы уже почти всё сделали! Теперь герой просто должен открыть сундук… конечно же, пнув по нему!

Открываем сундук

Для последнего ракурса мы используем камеру Camera4, настроив её так, как мы это сделали с Camera1 и Camera2.

Перетащите Camera4 в Timeline и добавьте Activation Track. Установите начальный кадр Camera4 в конец фазы активности Camera3 и растяните его до кадра 555. Это должно выглядеть так:

7c97a8c485527dde14bfc746363179e4

Добавьте анимацию Kick. Нажмите правой клавишей мыши (на Mac щёлкните с зажатым Command) на дорожке Model. Выберите Add Animation From Clip, а затем выберите Kick. Не изменяйте длительность. Теперь дорожка Model должна выглядеть следующим образом:

b7a026bf0b4c0a6799b3d30e3ff718c2

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

Разверните GameObject ChestBottom в окне Hierarchy. Перетащите GameObject ChestLid в Timeline и выберите Animation Track. В Timeline установите кадр 389. Теперь выберите дорожку ChestLid. Нажмите на кнопку Record.

Теперь, когда запись выполняется, выберите GameObject ChestLid в окне Hierarchy window и задайте X Position значение -1, а затем вернитесь к 0, чтобы задать исходное положение. В окне Timeline установите кадр 555. Наконец, в поле Transform окна Inspector задайте Y Position ChestLid значение 6. Снова нажмите кнопку Record на дорожке, чтобы завершить запись.

e4af94e527578b184b63008474bb83fd

Так мы анимируем крышку сундука, чтобы она пролетела сквозь стену.

Теперь надо разместить Camera4 так, чтобы она находилась над сундуком, когда крышка улетает. Мы снова повторим те же шаги, что и для предыдущей камеры, поэтому я не буду подробно описывать каждое действие.

Задайте объекту Camera4 позицию (X:-9.00, Y:5.4, Z:5.18). Задайте Camera4 поворот (X:90, Y:0, Z:0).

e2d9eebb5e49796441b0c48b7599d3d2

Как и в случае со всеми другими добавленными камерами, добавление анимации делает сцену более интересной, поэтому стоит сделать наезд камеры после открытия сундука.

В окне Timeline перетащите Animation Track в кадр 555.

Наконец задайте Y Position объекта Camera4 значение 3.74:

e4af94e527578b184b63008474bb83fd

Сцена наконец завершена. Нажмите на Play и оцените её!

af75c6b3fbbe8e5e5ef322edb65b96d9

Управляемся со сложностью: группирование дорожек

Это была короткая анимация всего с парой «актёров», поэтому нам было довольно легко отслеживать игровые объекты и дорожки. Но при создании более сложных сцен со множеством подвижных частей и актёров ими становится очень сложно управлять. Именно поэтому очень необходима упорядоченность. Хотя сцена уже готова, давайте потратим несколько минут на её упорядочивание — в будущем вы ещё поблагодарите себя за это.

Один из способов упорядочивания работы — группирование дорожек. Сначала нажмите правой клавишей мыши под дорожками в окне Timeline и выберите Track Group. Нажмите на Track Group и в Inspector измените её имя на Activations:

376e5534cbfc44d8954cf55b63a908ac

Повторите этот процесс и создайте Track Group под названием Animations. Теперь Timeline должна выглядеть так:

937cf731c4247663201ede9c2e91cb80

Теперь перетащите все дорожки с разделами Active в группу Activations, а все остальные в группу Animations. Теперь вы сможете открывать и закрывать каждую группу для удобства работы с ними:

376e5534cbfc44d8954cf55b63a908ac

Не забывайте сохранять свою работу. Откиньтесь на спинку своего режиссёрского кресла и похвалите себя — вы закончили свою первую Timeline.

Куда двигаться дальше

Если вы пропускали некоторые части туториала, то не забудьте, что можете скачать и заготовку, и готовый проект отсюда.

Мы хорошо потрудились и создали катсцену с использованием анимаций модели, сменой камер и обновлениями жизненных циклов объектов, однако здесь ещё многое можно изучить. Один из самых важных аспектов, связанных с Timeline — это создание собственных скриптов, в которых можно связать анимации с кодом, который можно выполнять вместе с ними. Подробнее о скриптах можно узнать здесь. Если вы уже хорошо освоились, то попробуйте добавить в сцену скрипт после открытия сундука с сокровищами.

Если вам интересно больше узнать об анимациях в Unity в целом, то изучите наш замечательный туториал Introduction to Unity Animation.

Чтобы узнать больше о создании 3D-моделей и об окне Animation, изучите подробную серию туториалов разработчиков Unity, представленную здесь.

И последнее — если вас интересует создание игр, то можете приобрести нашу книгу Unity Games By Tutorial. В ней рассказывается о создании с нуля четырёх типов игр с подробным описанием каждого этапа процесса.

Источник