Menu
CoddyTech

Obracaj się co sekundę

Część sekcji Podstawy skryptów w Unity ścieżki Unity w Coddy. Lekcja 4 z 67.

transform.Rotate(x, y, z) obraca obiekt GameObject o podaną liczbę stopni wokół każdej z jego osi. Wywołana w Update() obraca obiekt nieco w każdej klatce, więc obiekt stale się obraca.

Ale ile klatek przypada na sekundę? Na szybkim komputerze może to być 120, a na telefonie — 30. Zwykłe transform.Rotate(0, 0, 5) obracałoby obiekt cztery razy szybciej na szybszym urządzeniu. Rozwiązaniem Unity jest Time.deltaTime: liczba sekund, które upłynęły od poprzedniej klatki. Pomnóż przez nią prędkość, a będzie ona oznaczać prędkość na sekundę na każdym urządzeniu.

W tym przykładzie koło obraca się wokół osi z o 45 stopni na sekundę:

public float speed = 45f;

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

Przy 60 klatkach na sekundę Time.deltaTime wynosi około 0.0167, więc w każdej klatce obrót wynosi 45 * 0.0167, czyli około 0.75 stopnia, a 60 takich obrotów daje 45. Przy 30 klatkach na sekundę obrót w każdej klatce jest dwa razy większy, a suma po sekundzie nadal wynosi 45.

challenge icon

Wyzwanie

Łatwy

Sześcian ma skrypt Spinner z prędkością 90. W Update() spraw, by sześcian obracał się wokół osi y z prędkością speed stopni na sekundę, na dowolnym urządzeniu.

Naciśnij Play, aby zobaczyć efekt, a następnie Check.

Spróbuj swoich sił

using UnityEngine;

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

    void Update()
    {
        // Obróć tutaj sześcian wokół jego osi y
    }
}
quiz iconSprawdź się

Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.

Wszystkie lekcje w sekcji Podstawy skryptów w Unity