Результаты (
русский) 2:
[копия]Скопировано!
Часы Простой Отображение времени создать объект иерархии. Написать сценарий и приложите его к объекту. Имен доступа. Объектов Обновление с помощью методов. Поверните вещи в зависимости от времени. В этом уроке мы напишем небольшой C # Script, чтобы оживить оружие очень простые часы. Вы предполагается уже есть базовое понимание редактор единства в. Если вы играли с ним в течение нескольких минут, а затем вы хорошо идти. Вы создадите это в кратчайшие сроки. Создание часы Мы начнем с создания нового проекта Unity без каких-либо пакеты. Сцена по умолчанию содержит камеру, расположенную на (0, 1, -10), глядя на ось Z. Чтобы получить подобную перспективу как камеры в виде сцены, выберите камеру и выполнять GameObject / Align View в отдельные из меню. Нам нужно структуру объекта, чтобы представить часы. Создайте новый пустой GameObject через GameObject / Создать Пусто, установить свою позицию в (0, 0, 0), и имя это часы. Создайте три пустые дочерние объекты для него и назвать им часов, минут и секунд. Убедитесь, что все они расположены на (0, 0, 0), а также. Что это GameObject? Что дочерний объект? Мы будем использовать простые коробки, чтобы визуализировать оружие круглосуточно. Создать дочерний куб для каждой руки через GameObject / Создать Другое / куб. Дайте куб в течение нескольких часов позиции (0, 1, 0) и масштаба (0,5, 2, 0,5). Для куба минут его положение (0, 1,5, 0) и масштаб (0,25, 3, 0,25). Для секунд куб это (0, 2, 0) и (0,1, 4, 0,1). Строительство Часы и иерархия. Unitypackage Анимация часы Мы должны сценарий, чтобы оживить часы. Создать новый сценарий # C помощью Create / C # Script в окне проекта и назовите его ClockAnimator. Откройте сценарий и очистить его, чтобы мы могли начать свежий. Во-первых, мы указываем, что мы хотим использовать вещи из имен UnityEngine. Затем мы объявляем о существовании ClockAnimator. Мы описываем его как общедоступной класса, который наследует от MonoBehaviour. С помощью UnityEngine; ClockAnimator общественного класса: MonoBehaviour {}? Что такое пространство имен? Что такое класс? Что такое MonoBehaviour Это дает нам минимальное класс, который может быть использован для создания компонентов. Сохраните его, а затем приложите его к объекту Clock путем перетаскивания с точки зрения проекта в иерархии зрения, или с помощью компонента Add кнопку. ClockAnimator прикрепленной к Clock. Чтобы анимировать руки, нам нужен доступ к их Transform компонентов в первую очередь. Добавить общественного преобразования переменной для каждой руки в сценарий, а затем сохранить его. Эти общественные переменные станут свойств компонентов, которые вы можете назначить объект в редакторе. Редактор будет захватить Transform компоненты этих объектов и назначить их к нашим переменных. Выберите объект Clock, а затем перетащить соответствующие объекты в новых свойств. Что такое переменная? С помощью UnityEngine; общественного класса ClockAnimator: MonoBehaviour {общественного преобразования часов, минут, секунд;} опустошить заполненный ClockAnimator с пустыми и заполненными свойствами. Далее, мы ' будете добавьте метод обновления в сценарий. Это специальный метод, который будет вызываться один раз каждый кадр. Мы будем использовать его, чтобы установить вращение часы оружия. Используя UnityEngine; ClockAnimator общественного класса: MonoBehaviour {общественного Transform часы, минуты, секунды; частный недействительными Update () {// в настоящее время ничего не делать}} Что это за метод? Не должен " т Обновление открытыми? После сохранения сценария, редактор заметите, что наш компонент имеет способ обновления и покажет флажок, который позволяет нам, чтобы отключить его. Конечно, мы держать его включен. Обновление ClockAnimator украшенную флажком. Каждый час, часы рука должна вращаться 360/12 градусов. В протоколе рука должна вращаться 360/60 градусов в минуту. И, наконец, несколько секунд рука должна вращаться 360/60 градусов каждую секунду. Давайте определим эти значения как значения частного постоянных плавающей точкой для удобства. С помощью UnityEngine; общественного класса ClockAnimator: MonoBehaviour {личное строительства плавать hoursToDegrees = 360f / 12f, minutesToDegrees = 360f / 60f, secondsToDegrees = 360f / 60f; общественное преобразование часы, минуты, секунд; частный недействительными Update () {// в настоящее время ничего не делать}} Что особенного? сопзЬ каждого обновления, мы должны знать текущее время, чтобы эта вещь на работу. Пространство имен System содержит DateTime-структуру, которая подходит для этой работы. Это имеет статический свойство с именем Теперь, всегда содержит текущее время. Каждое обновление нужно, чтобы схватить его и хранить его во временной переменной. С помощью UnityEngine; с помощью системы; ClockAnimator общественного класса: MonoBehaviour {личное строительства плавать hoursToDegrees = 360f / 12f, minutesToDegrees = 360f / 60f, secondsToDegrees = 360f / 60f; общественное преобразование часы, минуты, секунды; частный недействительными Update () {DateTime время = DateTime.Now;}}? Что такое структура? Что такое свойство Чтобы получить оружие, чтобы повернуть, мы должны изменить свое местное вращение. Мы делаем это непосредственно установка localRotation из оружия, с помощью кватернионов. Кватернион имеет приятный метод, который мы можем использовать, чтобы определить произвольное вращение. Потому что мы, глядя на ось Z и единства использует левую систему координат, вращение должно быть отрицательным вокруг оси Z. С помощью UnityEngine; с помощью системы; общественности класс ClockAnimator: MonoBehaviour {личное строительства плавать hoursToDegrees = 360f / 12f, minutesToDegrees = 360f / 60f, secondsToDegrees = 360f / 60f; общественное преобразование часы, минуты, секунды, личное пустот Update () {DateTime время = DateTime.Now; hours.localRotation = Quaternion.Euler (0f, 0f, time.Hour * -hoursToDegrees); minutes.localRotation = Quaternion.Euler (0f, 0f, time.Minute * -minutesToDegrees); seconds.localRotation = Quaternion.Euler (0f, 0f, время .Second * -secondsToDegrees);}} Часы, показывающие, что это 12:44. Что такое кватернион? Почему бы не использовать ротацию? unitypackage Повышение часы Это работает! В режиме воспроизведения, наши часы показывают текущее время. Тем не менее, он ведет себя так же, как цифровые часы, как это только показывает дискретные шаги. Давайте включить опцию, чтобы показать время аналоговый, а также. Добавить общественного логическая переменная аналог сценарию и использовать его, чтобы определить, что делать в методе обновления. Мы можем переключать это значение в редакторе, даже в режиме воспроизведения. С помощью UnityEngine; с помощью системы; ClockAnimator Открытый класс: MonoBehaviour {личное строительства плавать hoursToDegrees = 360f / 12f, minutesToDegrees = 360f / 60f, secondsToDegrees = 360f / 60f; общественное преобразование часы, минуты, секунды; общественное аналоговые BOOL; частный недействительными Update () {если (аналоговый) {// в настоящее время ничего не делать} еще {DateTime время = DateTime.Now; hours.localRotation = Quaternion.Euler (0f, 0f, время. час * -hoursToDegrees); minutes.localRotation = Quaternion.Euler (0f, 0f, time.Minute * -minutesToDegrees); seconds.localRotation = Quaternion.Euler (0f, 0f, time.Second * -secondsToDegrees);}}} ClockAnimator позволяет аналоговом режиме. Для аналогового варианта нам понадобится несколько иной подход. Вместо того, чтобы DateTime.Now мы будем использовать DateTime.Now.TimeOfDay, который является TimeSpan. Это позволяет нам легкий доступ к дробных истекших часов, минут и секунд. Поскольку эти значения устанавливаются в парном - двойной точности чисел с плавающей точкой, - мы должны отдать им плавает. Что кастинг? С помощью UnityEngine; с помощью системы; общественного класса ClockAnimator: MonoBehaviour {личное строительства плавать hoursToDegrees = 360f / 12f, minutesToDegrees = 360f / 60f, secondsToDegrees = 360f / 60f; общественное преобразование часы, минуты, секунды; общественное BOOL аналоговых; личное пустот Update () {если (аналоговый) {TimeSpan TimeSpan = DateTime.Now.TimeOfDay; hours.localRotation = Quaternion.Euler (0f , 0F, (поплавок) * timespan.TotalHours -hoursToDegrees); minutes.localRotation = Quaternion.Euler (0F 0F,, (поплавок) * timespan.TotalMinutes -minutesToDegrees); seconds.localRotation = Quaternion.Euler (0f, 0f, ( плавать) timespan.TotalSeconds * -secondsToDegrees);} еще {DateTime время = DateTime.Now; hours.localRotation = Quaternion.Euler (0f, 0f, time.Hour * -hoursToDegrees); minutes.localRotation = Quaternion.Euler (0F, 0f, time.Minute * -minutesToDegrees); seconds.localRotation = Quaternion.Euler (0f, 0f, time.Second * -secondsToDegrees);}}} часы в аналоговом режиме, показывая, что это 12:56. Теперь наши часы работы аналог тоже!
переводится, пожалуйста, подождите..
