Menu
CoddyTech

Obracaj co sekundę

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

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

Ale ile klatek przypada na sekundę? Na szybkim komputerze może być ich 120, a na telefonie może być 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 obiekt obraca się o 45 * 0.0167, czyli około 0.75 stopnia, a 60 takich obrotów daje 45 stopni. Przy 30 klatkach na sekundę w każdej klatce obiekt obraca się dwa razy dalej, a suma po sekundzie nadal wynosi 45 stopni.

challenge icon

Wyzwanie

Łatwy

Spraw, by sześcian obracał się wokół osi y z prędkością speed stopni na sekundę.

  1. W Update() wywołaj transform.Rotate(x, y, z).
  2. Umieść speed * Time.deltaTime jako środkową liczbę, dla osi y, a 0 dla osi x i z. Powyższe koło obracało się wokół osi z; ten sześcian obraca się wokół osi y.

Naciśnij „Graj”: sześcian wykonuje ćwierć obrotu co sekundę. Następnie naciśnij „Sprawdź”.

Spróbuj swoich sił

using UnityEngine;

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

    void Update()
    {
        // Obróć tutaj sześcian wokół jego osi y
    }
}

Wszystkie lekcje w sekcji Podstawy skryptów w Unity

Poćwicz samodzielnie: Edytor online Unity