ClockA Simple Time Display Create an object hierarchy. Write a script  перевод - ClockA Simple Time Display Create an object hierarchy. Write a script  русский как сказать

ClockA Simple Time Display Create a

Clock

A Simple Time Display

Create an object hierarchy.
Write a script and attach it to an object.
Access namespaces.
Update objects through methods.
Rotate things based on time.

In this tutorial we'll write a small C# script to animate the arms of a very simple clock.

You're assumed to already have a basic understanding of Unity's editor. If you've played with it for a few minutes then you're good to go.
You will create this in no time.
Creating the clock

We start by creating a new Unity project without any packages. The default scene contains a camera positioned at (0, 1, -10) looking down the Z axis. To get a similar perspective as the camera in the scene view, select the camera and perform GameObject / Align View to Selected from the menu.

We need an object structure to represent the clock. Create a new empty GameObject via GameObject / Create Empty, set its position to (0, 0, 0), and name it Clock. Create three empty child objects for it and name them Hours, Minutes, and Seconds. Make sure they are all positioned at (0, 0, 0) as well.
What's a GameObject?
What's a child object?

We'll use simple boxes to visualize the arms of the clock. Create a child cube for each arm via GameObject / Create Other / Cube. Give the cube for Hours position (0, 1, 0) and scale (0.5, 2, 0.5). For the minutes cube it's position (0, 1.5, 0) and scale (0.25, 3, 0.25). For seconds cube it's (0, 2, 0) and (0.1, 4, 0.1).
Clock construction and hierarchy.
unitypackage
Animating the clock

We need a script to animate the clock. Create a new C# script via Create / C# Script in the Project view and name it ClockAnimator. Open the script and empty it so we can start fresh.

First, we indicate that we want to use stuff from the UnityEngine namespace. Then we declare the existence of the ClockAnimator. We describe it as a publicly available class that inherits from MonoBehaviour.

using UnityEngine;

public class ClockAnimator : MonoBehaviour {
}

What's a namespace?
What's a class?
What's a MonoBehaviour?

This gives us a minimal class that can be used to create components. Save it, then attach it to the the Clock object by dragging from the Project view to the Hierarchy view, or via the Add Component button.
ClockAnimator attached to Clock.

To animate the arms, we need access to their Transform components first. Add a public Transform variable for each arm to the script, then save it. These public variables will become component properties which you can assign object to in the editor. The editor will then grab the Transform components of these objects and assign them to our variables. Select the Clock object, then drag the corresponding objects to the new properties.
What's a variable?

using UnityEngine;

public class ClockAnimator : MonoBehaviour {

public Transform hours, minutes, seconds;
}

empty filled
ClockAnimator with empty and filled properties.

Next, we'll add an update method to the script. This is a special method that will be called once every frame. We'll use it to set the rotation of the clock arms.

using UnityEngine;

public class ClockAnimator : MonoBehaviour {

public Transform hours, minutes, seconds;

private void Update () {
// currently do nothing
}
}

What's a method?
Shouldn't Update be public?

After saving the script, the editor will notice that our component has an update method and will show a checkbox that allows us to disable it. Of course we keep it enabled.
Updating ClockAnimator adorned with a checkbox.

Each hour, the Hours arm has to rotate 360/12 degrees. The Minutes arm has to rotate 360/60 degrees per minute. Finally, the Seconds arm has to rotate 360/60 degrees every second. Let's define these values as private constant floating-point values for convenience.

using UnityEngine;

public class ClockAnimator : MonoBehaviour {

private const float
hoursToDegrees = 360f / 12f,
minutesToDegrees = 360f / 60f,
secondsToDegrees = 360f / 60f;

public Transform hours, minutes, seconds;

private void Update () {
// currently do nothing
}
}

What's special about const?

Each update we need to know the current time to get this thing to work. The System namespace contains the DateTime struct, which is suited for this job. It has a static property named Now that always contains the current time. Each update we need to grab it and store it in a temporary variable.

using UnityEngine;
using System;

public class ClockAnimator : MonoBehaviour {

private const float
hoursToDegrees = 360f / 12f,
minutesToDegrees = 360f / 60f,
secondsToDegrees = 360f / 60f;

public Transform hours, minutes, seconds;

private void Update () {
DateTime time = DateTime.Now;
}
}

What's a struct?
What's a property?

To get the arms to rotate, we need to change their local rotation. We do this by directly setting the localRotation of the arms, using quaternions. Quaternion has a nice method we can use to define an arbitrary rotation.

Because we're looking down the Z axis and Unity uses a left-handed coordinate system, the rotation must be negative around the Z axis.

using UnityEngine;
using System;

public class ClockAnimator : MonoBehaviour {

private const float
hoursToDegrees = 360f / 12f,
minutesToDegrees = 360f / 60f,
secondsToDegrees = 360f / 60f;

public Transform hours, minutes, seconds;

private void Update () {
DateTime time = 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);
}
}

Clock showing it's 12:44.
What's a quaternion?
Why not use rotation?
unitypackage
Improving the clock

This works! When in play mode, our clock shows the current time. However, it behaves much like a digital clock as it only shows discrete steps. Let's include an option to show analog time as well. Add a public boolean variable analog to the script and use it to determine what to do in the update method. We can toggle this value in the editor, even when in play mode.

using UnityEngine;
using System;

public class ClockAnimator : MonoBehaviour {

private const float
hoursToDegrees = 360f / 12f,
minutesToDegrees = 360f / 60f,
secondsToDegrees = 360f / 60f;

public Transform hours, minutes, seconds;

public bool analog;

private void Update () {
if (analog) {
// currently do nothing
}
else {
DateTime time = 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);
}
}
}

ClockAnimator allowing analog mode.

For the analog option we need a slightly different approach. Instead of DateTime.Now we'll use DateTime.Now.TimeOfDay, which is a TimeSpan. This allows us easy access to the fractional elapsed hours, minutes, and seconds. Because these values are provided as doubles – double precision floating-point values – we need to cast them to floats.
What's casting?

using UnityEngine;
using System;

public class ClockAnimator : MonoBehaviour {

private const float
hoursToDegrees = 360f / 12f,
minutesToDegrees = 360f / 60f,
secondsToDegrees = 360f / 60f;

public Transform hours, minutes, seconds;
public bool analog;

private void Update () {
if (analog) {
TimeSpan timespan = DateTime.Now.TimeOfDay;
hours.localRotation = Quaternion.Euler(
0f, 0f, (float)timespan.TotalHours * -hoursToDegrees);
minutes.localRotation = Quaternion.Euler(
0f, 0f, (float)timespan.TotalMinutes * -minutesToDegrees);
seconds.localRotation = Quaternion.Euler(
0f, 0f, (float)timespan.TotalSeconds * -secondsToDegrees);
}
else {
DateTime time = 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);
}
}
}

Clock in analog mode showing it's 12:56.

Now our clock works analog too!
0/5000
Источник: -
Цель: -
Результаты (русский) 1: [копия]
Скопировано!
ClockA Simple Time Display Create an object hierarchy. Write a script and attach it to an object. Access namespaces. Update objects through methods. Rotate things based on time.In this tutorial we'll write a small C# script to animate the arms of a very simple clock.You're assumed to already have a basic understanding of Unity's editor. If you've played with it for a few minutes then you're good to go.You will create this in no time.Creating the clockWe start by creating a new Unity project without any packages. The default scene contains a camera positioned at (0, 1, -10) looking down the Z axis. To get a similar perspective as the camera in the scene view, select the camera and perform GameObject / Align View to Selected from the menu.We need an object structure to represent the clock. Create a new empty GameObject via GameObject / Create Empty, set its position to (0, 0, 0), and name it Clock. Create three empty child objects for it and name them Hours, Minutes, and Seconds. Make sure they are all positioned at (0, 0, 0) as well.What's a GameObject?What's a child object?We'll use simple boxes to visualize the arms of the clock. Create a child cube for each arm via GameObject / Create Other / Cube. Give the cube for Hours position (0, 1, 0) and scale (0.5, 2, 0.5). For the minutes cube it's position (0, 1.5, 0) and scale (0.25, 3, 0.25). For seconds cube it's (0, 2, 0) and (0.1, 4, 0.1).Clock construction and hierarchy.unitypackageAnimating the clockWe need a script to animate the clock. Create a new C# script via Create / C# Script in the Project view and name it ClockAnimator. Open the script and empty it so we can start fresh.First, we indicate that we want to use stuff from the UnityEngine namespace. Then we declare the existence of the ClockAnimator. We describe it as a publicly available class that inherits from MonoBehaviour.using UnityEngine;public class ClockAnimator : MonoBehaviour {}What's a namespace?What's a class?What's a MonoBehaviour?This gives us a minimal class that can be used to create components. Save it, then attach it to the the Clock object by dragging from the Project view to the Hierarchy view, or via the Add Component button.ClockAnimator attached to Clock.To animate the arms, we need access to their Transform components first. Add a public Transform variable for each arm to the script, then save it. These public variables will become component properties which you can assign object to in the editor. The editor will then grab the Transform components of these objects and assign them to our variables. Select the Clock object, then drag the corresponding objects to the new properties.What's a variable?using UnityEngine;public class ClockAnimator : MonoBehaviour { public Transform hours, minutes, seconds;}empty filledClockAnimator with empty and filled properties.Next, we'll add an update method to the script. This is a special method that will be called once every frame. We'll use it to set the rotation of the clock arms.using UnityEngine;public class ClockAnimator : MonoBehaviour { public Transform hours, minutes, seconds; private void Update () { // currently do nothing }}What's a method?Shouldn't Update be public?After saving the script, the editor will notice that our component has an update method and will show a checkbox that allows us to disable it. Of course we keep it enabled.Updating ClockAnimator adorned with a checkbox.Each hour, the Hours arm has to rotate 360/12 degrees. The Minutes arm has to rotate 360/60 degrees per minute. Finally, the Seconds arm has to rotate 360/60 degrees every second. Let's define these values as private constant floating-point values for convenience.using UnityEngine;public class ClockAnimator : MonoBehaviour { private const float hoursToDegrees = 360f / 12f, minutesToDegrees = 360f / 60f, secondsToDegrees = 360f / 60f; public Transform hours, minutes, seconds; private void Update () { // currently do nothing }}What's special about const?Each update we need to know the current time to get this thing to work. The System namespace contains the DateTime struct, which is suited for this job. It has a static property named Now that always contains the current time. Each update we need to grab it and store it in a temporary variable.using UnityEngine;using System;public class ClockAnimator : MonoBehaviour { private const float hoursToDegrees = 360f / 12f, minutesToDegrees = 360f / 60f, secondsToDegrees = 360f / 60f; public Transform hours, minutes, seconds; private void Update () { DateTime time = DateTime.Now; }}What's a struct?What's a property?To get the arms to rotate, we need to change their local rotation. We do this by directly setting the localRotation of the arms, using quaternions. Quaternion has a nice method we can use to define an arbitrary rotation.Because we're looking down the Z axis and Unity uses a left-handed coordinate system, the rotation must be negative around the Z axis.using UnityEngine;using System;public class ClockAnimator : MonoBehaviour { private const float hoursToDegrees = 360f / 12f, minutesToDegrees = 360f / 60f, secondsToDegrees = 360f / 60f; public Transform hours, minutes, seconds; private void Update () { DateTime time = 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); }}Clock showing it's 12:44.What's a quaternion?Why not use rotation?unitypackageImproving the clockThis works! When in play mode, our clock shows the current time. However, it behaves much like a digital clock as it only shows discrete steps. Let's include an option to show analog time as well. Add a public boolean variable analog to the script and use it to determine what to do in the update method. We can toggle this value in the editor, even when in play mode.using UnityEngine;using System;public class ClockAnimator : MonoBehaviour { private const float hoursToDegrees = 360f / 12f, minutesToDegrees = 360f / 60f, secondsToDegrees = 360f / 60f; public Transform hours, minutes, seconds; public bool analog; private void Update () { if (analog) { // currently do nothing } else { DateTime time = 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); } }}ClockAnimator allowing analog mode.For the analog option we need a slightly different approach. Instead of DateTime.Now we'll use DateTime.Now.TimeOfDay, which is a TimeSpan. This allows us easy access to the fractional elapsed hours, minutes, and seconds. Because these values are provided as doubles – double precision floating-point values – we need to cast them to floats.What's casting?using UnityEngine;using System;public class ClockAnimator : MonoBehaviour { private const float hoursToDegrees = 360f / 12f, minutesToDegrees = 360f / 60f, secondsToDegrees = 360f / 60f; public Transform hours, minutes, seconds; public bool analog; private void Update () { if (analog) { TimeSpan timespan = DateTime.Now.TimeOfDay; hours.localRotation = Quaternion.Euler( 0f, 0f, (float)timespan.TotalHours * -hoursToDegrees); minutes.localRotation = Quaternion.Euler( 0f, 0f, (float)timespan.TotalMinutes * -minutesToDegrees); seconds.localRotation = Quaternion.Euler( 0f, 0f, (float)timespan.TotalSeconds * -secondsToDegrees); } else { DateTime time = 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); } }}Clock in analog mode showing it's 12:56.Now our clock works analog too!
переводится, пожалуйста, подождите..
Результаты (русский) 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. Теперь наши часы работы аналог тоже!































































































































































































































переводится, пожалуйста, подождите..
Результаты (русский) 3:[копия]
Скопировано!
часы



простой индикатор времени создания объекта иерархии.
писать сценарий и прикрепить ее к предмету.
доступ пространства имен.
обновления объектов с помощью методов.
повернуть вещи, основанные на времени.

в этом уроке мы напишем небольшой с # сценарий для анимации оружия очень просто часы.

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


создания часов мы создадим новую единства проект без каких - либо пакетов.по умолчанию сцена содержит фотоаппарат, дислоцированные в (0, 1 - 10), смотришь вниз по оси Z.получить такую перспективу в камеру на сцене того,отобрать камеру и выполнять gameobject / согласования для отдельных меню.

нам нужен объект структура представлять часы.создать новый пустой gameobject через gameobject / создать пустой, установить свою позицию (0, 0, 0), и имя ему часы.создать три пустых ребенка объекты и их называть, часы, минуты и секунды.убедитесь, что все они расположены на (0, 0, 0), а также.
что такое gameobject?
что ребенок объект?

мы будем использовать простые урны для визуализации руки часы.создать ребенка куб на каждой руке по gameobject / создать другие / куб.дай куб часами позиции (0, 1, 0) и масштаб (0, 2, 0).за минуты кубик это положение (0 - 1,5, 0) и масштаб (0, 3, 0).на пару секунд кубик это (0, 2, 0) и (0, 4, 0).
время строительства и иерархии.



unitypackage нескольких часов нам нужен сценарий для анимации часы.создать новый с # скрипт через создание / C # сценарий в проекте взгляд и назвать ее clockanimator.открыть скрипт и пустой, так мы можем начать заново.

первой, мы показываем, что мы хотим использовать вещи с unityengine пространства имен.тогда мы заявляем о существовании clockanimator.мы называем ее открытый класс, который наследует monobehaviour.



с использованием unityengine; общественных классов clockanimator: monobehaviour {}


что пространств имен?
что класс?
что - monobehaviour?

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

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



с использованием unityengine; общественных классов clockanimator: monobehaviour {

общественной трансформации часов, минут и секунд;



clockanimator пустые заполнены} с пустым и заполнены свойства.

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



с использованием unityengine; общественных классов clockanimator: monobehaviour {

общественной трансформации часы, минуты, секунды;

частных недействительным Update () {
/ / в настоящее время не



}}, что метод?
не обновлять открытыми?

после спасения сценарий,редактор будет заметить, что наш компонент обновленную информацию метод и покажет флажок, что позволяет нам отключить.мы, конечно, не позволило.
обновления clockanimator украшенный флажок.

каждый час, часов рука должна вращаться 360 / 12 градусов.минуты руку не вращения 360 / 60 градусов в минуту.и наконец, секунд рука должна вращаться на 360 / 60 градусов каждый второй.давайте определить эти ценности в качестве частных постоянно с ценностями для удобства.



с использованием unityengine; общественных классов clockanimator: monobehaviour {

частных const поплавка
hourstodegrees = 360f / 12F,
minutestodegrees = 360f / 60f,
secondstodegrees = 360f / 60f;

общественной трансформации часов, минут и секунд;

частные силы Update () {
/ / в настоящее время не



}} что особенного const?

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


с использованием системы с использованием unityengine; общественных классов;



clockanimator: monobehaviour {частного const плавать.hourstodegrees = 360f / 12F,
minutestodegrees = 360f / 60f,
secondstodegrees = 360f / 60f;

общественной трансформации часы, минуты, секунды;

частных недействительным Update () {
datetime время = datetime. сейчас;}}



что за структура?
что недвижимость?

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

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


с использованием системы с использованием unityengine; общественных классов;



clockanimator: monobehaviour {частного const плавать
hourstodegrees = 360f / 12F,
minutestodegrees = 360f / 60f,
secondstodegrees = 360f / 60f;

общественной трансформации часы, минуты, секунды;

частных недействительным Update () {
datetime время = datetime. теперь;
hours.localrotation =
кватернион. эйлер (от, ну, раз. час * - hourstodegrees);
minutes.localrotation =
кватернион. эйлер (ну, ну, время. минуту * - minutestodegrees);
seconds.localrotation =
кватернион. эйлер (ну, ну, раз. второй * - secondstodegrees);}}



часы, показывающие, это 12:44.
что такое кватернион?"почему не использовать ротации?



unitypackage улучшения часы, это работает!когда в игре режиме, наши часы показывает текущий момент.однако, он ведёт себя как цифровые часы, как это показывает лишь отдельные шаги.давайте включать возможность показать аналоговый, а также.добавить публичное логическое переменной аналог сценарий и использовать его, чтобы определить, что делать в обновление метод.мы можем показать это значение в редакторе, даже когда в игре режиме.


с использованием системы с использованием unityengine; общественных классов;



clockanimator: monobehaviour {частного const поплавка
hourstodegrees = 360f / 12F,
minutestodegrees = 360f / 60f,
secondstodegrees = 360f / 60f;

общественной трансформации.минут, секунд;



частного государственного bool аналогового; силы Update () {
если (аналог) {
/ / в настоящее время не


{} еще datetime время = datetime. теперь;
hours.localrotation =
кватернион. эйлер (от, ну, раз. час * - hourstodegrees);] minutes.localrotation =
кватернион. эйлер (ну, ну, раз. минуту * - minutestodegrees);
seconds.localrotation =
кватернион. эйлер (ну, ну, раз. второй * - secondstodegrees);]
переводится, пожалуйста, подождите..
 
Другие языки
Поддержка инструмент перевода: Клингонский (pIqaD), Определить язык, азербайджанский, албанский, амхарский, английский, арабский, армянский, африкаанс, баскский, белорусский, бенгальский, бирманский, болгарский, боснийский, валлийский, венгерский, вьетнамский, гавайский, галисийский, греческий, грузинский, гуджарати, датский, зулу, иврит, игбо, идиш, индонезийский, ирландский, исландский, испанский, итальянский, йоруба, казахский, каннада, каталанский, киргизский, китайский, китайский традиционный, корейский, корсиканский, креольский (Гаити), курманджи, кхмерский, кхоса, лаосский, латинский, латышский, литовский, люксембургский, македонский, малагасийский, малайский, малаялам, мальтийский, маори, маратхи, монгольский, немецкий, непальский, нидерландский, норвежский, ория, панджаби, персидский, польский, португальский, пушту, руанда, румынский, русский, самоанский, себуанский, сербский, сесото, сингальский, синдхи, словацкий, словенский, сомалийский, суахили, суданский, таджикский, тайский, тамильский, татарский, телугу, турецкий, туркменский, узбекский, уйгурский, украинский, урду, филиппинский, финский, французский, фризский, хауса, хинди, хмонг, хорватский, чева, чешский, шведский, шона, шотландский (гэльский), эсперанто, эстонский, яванский, японский, Язык перевода.

Copyright ©2025 I Love Translation. All reserved.

E-mail: