2 UTILISATIONS INATTENDUES POUR LE MOUVEMENT DE SON PERSONNAGE AVEC UNITY
UNITY NOUS PERMET DE DEPLACER NOTRE PERSONNAGE FACILEMENT!
C'est vrai avec simplement une ligne de code et 1 variable nous allons avoir notre personnage se déplacer vers une direction. Je vous offre la ligne de code neutre qu'il faut mettre
dans le void Update() d'un script situé dans mon GameObject personnage:
transform.Translate(x, y, z);
LE MOUVEMENT AUTOMATIQUE DE SON PERSONNAGE DANS UNITY?
Le déplacement automatique de son personnage est un déplacement qui va se faire tout seul. C'est-à-dire sans que le joueur appuie sur un bouton et face quoi que ce soit le personnage va se déplacer tout seul.
Voici un exemple de code qu'il faut mettre dans le Update:
//Pour déplacer son personnage dans Unity vers la droite
transform.Translate((2) * Time.deltaTime, 0, 0);
transform.Translate((2) * Time.deltaTime, 0, 0);
ici mon personnage se déplace vers la droite et donc le mets mes variables dans la coordonnées X et je laisse les valeurs positives.
Si j'allais vers la gauche j'ajouterai un - devant mes valeurs, voici ce que ça donne:
//Pour déplacer son personnage dans Unity vers la gauche
transform.Translate(-(2) * Time.deltaTime, 0, 0);
transform.Translate(-(2) * Time.deltaTime, 0, 0);
Et si je vais vers le haut?
//Pour déplacer son personnage dans Unity vers le haut
transform.Translate(0, (2) * Time.deltaTime, 0);
transform.Translate(0, (2) * Time.deltaTime, 0);
LE MOUVEMENT AUTOMATIQUE VERS 2 DIRECTIONS DE SON PERSONNAGE DANS UNITY AVEC UNE COROUTINE?
C'est un type de mouvement que j'adore, ça fait genre qu'il y a une intelligence artificielle et que notre personnage est vivant car il peut bouger tout seule vers la gauche ou la droite.
Disons que nous faisons un jeu de Platforme 2D et donc que notre personnage qui est un Mouton se déplace aléatoirement vers la gauche ou vers la droite selon un timer. Eh bien ceci donnerait:
Step Uno. Créer un Boolean Direction.
bool Direction;
(De base il sera égal à 0).
Step Two. Dans le void Update() il faut définir nos 2 directions.
//DROITE - Right // X
transform.Translate((Vitesse) * Time.deltaTime, 0, 0);
//GAUCHE - Left // X
transform.Translate(-(Vitesse) * Time.deltaTime, 0, 0);
Step Three. Mettre en place notre condition.
if (Direction == 0)
{
//DROITE - Right // X
transform.Translate((Vitesse) * Time.deltaTime, 0, 0);
}
else if (Direction == 1)
{
//GAUCHE - Left // X
transform.Translate(-(Vitesse) * Time.deltaTime, 0, 0);
}
//DROITE - Right // X
transform.Translate((Vitesse) * Time.deltaTime, 0, 0);
}
else if (Direction == 1)
{
//GAUCHE - Left // X
transform.Translate(-(Vitesse) * Time.deltaTime, 0, 0);
}
Donc quand Direction est égale à 0, alors mon personnage va se déplacer vers la droite!
Maintenant notre petit Timer qui sera une COROUTINE. C'est comme créér une fonction.
void IEnumerator LeNomDeMonIEnumerator()
{
}
Ensuite il ne faut pas oublier d'insérer ceci à l'intérieur sans quoi il va pas être content!
yield return new waitforseconds(LeNombreDeSecondeAAttendre);
Cette ligne de code permet à Unity de savoir au bout de combien de temps le code A vers être lut après le code B. Je vous montre ça:
void IEnumerator LeNomDeMonIEnumerator()
{
MON CODE B ici;
yield return new waitforseconds(LeNombreDeSecondeAAttendre);
MON CODE A ici;
}
Donc dans notre exemple ça donnerait:
void IEnumerator AutoDirection()
{
Direction = 0;
//Ici mon personnage va vers la droite.
yield return new waitforseconds(4f);
StartCoroutine(AutoDirection());
//Ici le Relance ma Coroutine au bout de 4 secondes.
}
Dans cet exemple de code, notre personnage va aller uniquement vers la droite. Or je veux que lorsque mon personnage allait vers la droite, qu'en suite il aille vers la Gauche.
Donc je vais devoir mettre une Condition ce qui donne:
void IEnumerator AutoDirection()
{
if(Direction == 1)
{
Direction = 0;
} else {
Direction = 1;
}
yield return new waitforseconds(4f);
StartCoroutine(AutoDirection());
}
