Menu
CoddyTech

Поворачивайте каждую секунду

Часть раздела Основы скриптинга в Unity путешествия по Unity на Coddy. Урок 4 из 67.

transform.Rotate(x, y, z) поворачивает GameObject на указанное количество градусов вокруг каждой из его осей. При вызове в Update() объект понемногу поворачивается на каждом кадре, поэтому продолжает вращаться.

Но сколько кадров приходится на секунду? На быстром компьютере, возможно, 120, а на телефоне — 30. Обычный вызов transform.Rotate(0, 0, 5) на быстром устройстве заставлял бы объект вращаться в четыре раза быстрее. Решение Unity — Time.deltaTime: количество секунд, прошедших с последнего кадра. Умножьте на него скорость — и она будет означать скорость в секунду на любом устройстве.

Здесь колесо вращается вокруг оси z со скоростью 45 градусов в секунду:

public float speed = 45f;

void Update()
{
    transform.Rotate(0, 0, speed * Time.deltaTime);
}

При 60 кадрах в секунду Time.deltaTime равен примерно 0.0167, поэтому за каждый кадр объект поворачивается на 45 * 0.0167, то есть примерно на 0.75 градуса, а за 60 таких кадров получается 45 градусов. При 30 кадрах в секунду за каждый кадр объект поворачивается вдвое сильнее, и за секунду по-прежнему набирается 45 градусов.

challenge icon

Задание

Легко

У куба есть скрипт Spinner со значением speed 90. В Update() заставь куб вращаться вокруг оси y на speed градусов в секунду на любом устройстве.

Нажми Play, чтобы посмотреть, а затем Check.

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

using UnityEngine;

public class Spinner : MonoBehaviour
{
    public float speed = 90f;

    void Update()
    {
        // Здесь поверните куб вокруг его оси y
    }
}
quiz iconПроверьте себя

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

Все уроки раздела Основы скриптинга в Unity