Menu
CoddyTech

Flottants et Mathf

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

Tu as rencontré le f dans « Les décimales ont besoin d’un f » : C# lit 0.5 comme un double, et Unity compte en float. La même chose se produit avec les opérations mathématiques. System.Math fonctionne avec des doubles, donc float s = Math.Sin(x); échoue avec CS0266: Cannot implicitly convert type 'double' to 'float'.

Unity en propose une version pour les float, Mathf : Mathf.Sin, Mathf.Abs, Mathf.Sqrt, Mathf.PI. Cette bouée qui oscille présentait les deux erreurs et compile après cette modification :

// avant : float y = 1 + Math.Sin(Time.time * 2) * 0.5;
float y = 1 + Mathf.Sin(Time.time * 2) * 0.5f;
transform.position = new Vector3(0, y, 0);

Les nombres entiers comme 1 et 2 n’ont pas besoin de suffixe : un int se convertit en float sans aucune perte.

challenge icon

Défi

Facile

Fais compiler le script du cœur pour qu’il pulse à nouveau.

  1. Sur la ligne size, remplace Math.Abs et Math.Sin par Mathf.Abs et Mathf.Sin.
  2. Remplace 0.5 par 0.5f et conserve le reste de la formule.

Appuie sur « Jouer » : le cœur grandit de 1 à 1.5 puis revient, environ une fois par seconde. Puis appuie sur « Vérifier ».

Essayez vous-même

using System;
using UnityEngine;

public class Pulse : MonoBehaviour
{
    void Update()
    {
        float size = 1 + Math.Abs(Math.Sin(Time.time * 3)) * 0.5;
        transform.localScale = new Vector3(size, size, size);
    }
}

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

Entraînez-vous par vous-même : Playground Unity