Menu
CoddyTech

Tourner chaque seconde

Fait partie de la section Les bases du scripting dans Unity du Journey Unity de Coddy. Leçon 4 sur 67.

transform.Rotate(x, y, z) fait tourner un GameObject du nombre de degrés indiqué autour de chacun de ses axes. Appelé dans Update(), il le fait tourner un peu à chaque image, donc l’objet continue de tourner.

Mais combien d’images y a-t-il dans une seconde ? Sur un ordinateur rapide, peut-être 120 ; sur un téléphone, peut-être 30. Un simple transform.Rotate(0, 0, 5) tournerait quatre fois plus vite sur l’ordinateur rapide. La solution de Unity est Time.deltaTime : le nombre de secondes écoulées depuis la dernière image. Multipliez une vitesse par cette valeur et elle correspond à une vitesse par seconde, sur tous les appareils.

Ici, une roue tourne autour de son axe z à 45 degrés par seconde :

public float speed = 45f;

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

À 60 images par seconde, Time.deltaTime vaut environ 0.0167, donc chaque image fait tourner la roue de 45 * 0.0167, soit environ 0.75 degré, et ces 60 rotations donnent 45 degrés. À 30 images par seconde, chaque image fait tourner la roue deux fois plus loin, et une seconde donne toujours un total de 45 degrés.

challenge icon

Défi

Facile

Le cube a un script Spinner avec une speed de 90. Dans Update(), fais tourner le cube autour de son axe y à une vitesse de speed degrés par seconde, sur n’importe quel appareil.

Appuie sur Play pour le regarder tourner, puis sur Check.

Essayez vous-même

using UnityEngine;

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

    void Update()
    {
        // Faites tourner le cube autour de son axe y ici
    }
}
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Les bases du scripting dans Unity