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.
Défi
FacileFais compiler le script du cœur pour qu’il pulse à nouveau.
- Sur la ligne
size, remplaceMath.AbsetMath.SinparMathf.AbsetMathf.Sin. - Remplace
0.5par0.5fet 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
1Les bases de C# dans Unity
Bonjour, UnityVariablesLes nombres décimaux ont besoin d’un fDu texte dans la consoleDes variables qui mémorisentSi et sinonComparer des nombresRécapitulatif : le collecteur de pièces7Boucles et méthodes
Répéter avec forBoucles imbriquéesÉcrire une méthodeMéthodes qui renvoient une réponseTableauxRécapitulatif : escalier10Rechercher des objets
Rechercher par nomTagsRechercher par typeLes références plutôt que la rechercheLe null de UnityRécapitulatif : la pièce la plus proche13Projet : Éviter les blocs
Le coureurDes blocs tombent du ciel2Mettez-le en mouvement
Placez le cubeDéplacez-le à chaque frameTournez chaque secondeDirigez avec les touchesRécapitulatif : pilotez le cube5Vecteurs
Additionner des vecteursDirectionsEspace local et espace globalVitesse diagonaleDistance entre des objetsVector3 est une structureRécapitulatif : pilote de drone8GameObjects et composants
Références dans l’InspectorObtenir un composantComposants manquantsAjouter un composantRequireComponentAfficher et masquerRécapitulatif : interrupteur3L’inspecteur
Champs de l’inspecteurSerializeFieldFlottants et MathfAttributs de l’inspecteurRécapitulatif : ascenseur6Transformations et hiérarchie
Parents et enfantsHissez le drapeauÉchelleRegarder les objetsSe déplacer vers un pointRécapitulatif : la lune en orbite9Projet : Attrape l’étoile
Le receveurUne étoile filanteEntraînez-vous par vous-même : Playground Unity