4 animations sur un perso , 1 animation qui bouge

Questions techniques liées à l’utilisation d'Unity (et n'entrant pas dans le cadre d'une des sections suivantes)
Répondre
Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

4 animations sur un perso , 1 animation qui bouge

Message par freepl » 18 Mars 2020 10:51

Bonjour

Je fait un cycliste avec 4 animations.
Il pédale, il pédale et tend le bras gauche, il pédale et tend le bras droit et il est à l'arrêt, pied gauche au sol avec sa tête qui tourne un peu de droite à gauche pour faire une petite animation
Il pédale
ScreenShot050.jpg
ScreenShot050.jpg (118.65 Kio) Consulté 3704 fois
il pédale et tend le bras gauche
ScreenShot050.jpg
ScreenShot050.jpg (118.65 Kio) Consulté 3704 fois
il pédale et tend le bras droit
ScreenShot050.jpg
ScreenShot050.jpg (118.65 Kio) Consulté 3704 fois
Suite à venir ( pb de taille d'image)
Pièces jointes
ScreenShot051.jpg
ScreenShot051.jpg (124.53 Kio) Consulté 3704 fois
ScreenShot052.jpg
ScreenShot052.jpg (121.62 Kio) Consulté 3704 fois

Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

Re: 4 animations sur un perso , 1 animation qui bouge

Message par freepl » 18 Mars 2020 11:02

il est à l'arrêt, pied gauche au sol
ScreenShot053.jpg
ScreenShot053.jpg (92.34 Kio) Consulté 3698 fois
J'utilise ce script ( Merci Boubouk50). En fonction des vitesses , c'est telle ou telle animation qui se lance

Code : Tout sélectionner

using UnityEngine;
using System.Collections;

public class VeloAnimationBrasPourTourner : MonoBehaviour {
	// pour les nouveaux personnages à 4 animations
	private TrajetVl trajetVl;
	public Animation anim;
	public string arret, roule,gauche,droit;
	public bool chien;
	
	void Start () {
		if (chien)
			trajetVl = transform.parent.parent.GetComponent<TrajetVl>();
		else 
			trajetVl = transform.parent.GetComponent<TrajetVl>();
	}
	
	// Update is called once per frame
	void Update () {
		switch((int)Mathf.Round(trajetVl.kmh*10))
		{
		case (70): // vitesse égale 7 km/h sur le déclencheur
			anim.Play(roule);
			break;
		case (65): // vitesse égale 6.5 km/h sur le déclencheur
			anim.Play(gauche);
			break;
		case (63): // vitesse égale 0.1 km/h sur le déclencheur
			anim.Play(droit);
			break;
		default :
			anim.Play(arret);
			break;
		}
	}
}


Il fonctionne sans pb.

Le bug vient que quand je mets une vitesse nulle, j'ai bien l'animation de la tête du perso qui tourne de droite à gauche et les roues du vélo qui ne tournent pas .
MAIS j'ai ses jambes qui ne se mettent pas à la bonne position
ScreenShot056.jpg
ScreenShot056.jpg (154.47 Kio) Consulté 3698 fois

Si vous avez une idée .
Merci

Avatar de l’utilisateur
jmhoubre
Messages : 856
Inscription : 05 Oct 2019 22:05

Re: 4 animations sur un perso , 1 animation qui bouge

Message par jmhoubre » 18 Mars 2020 11:07

Il a une autorisation de sortir ton cycliste ?
J'ai du mal à t'aider, je ne connais pas trop l'ancien système d'animation. Pourquoi tu n'utilises pas l'actuel avec un animator ?
Dernière édition par jmhoubre le 18 Mars 2020 11:08, édité 1 fois.

Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

Re: 4 animations sur un perso , 1 animation qui bouge

Message par freepl » 18 Mars 2020 11:08

Lui oui ...
Nous non :mdr3:


J'utilise la 4.6 car au boulot je n'ai que celle-là.

Avatar de l’utilisateur
jmhoubre
Messages : 856
Inscription : 05 Oct 2019 22:05

Re: 4 animations sur un perso , 1 animation qui bouge

Message par jmhoubre » 18 Mars 2020 11:14

Je suis un peu étonné par ce script. Notamment la ligne :

Code : Tout sélectionner

case (63): // vitesse égale 0.1 km/h sur le déclencheur
je me demande pourquoi le commentaire indique 0.1 km/h alors que visiblement il s'agit de 6,3 km/h. :aille:

Au boulot ? Tu n'est pas confiné ?

Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

Re: 4 animations sur un perso , 1 animation qui bouge

Message par freepl » 18 Mars 2020 11:17

Erreur sur le commentaire.
Je bosse chez moi car j'ai unity en version free


J'ai remarqué qu'en fonction du moment où V=0 km/h, la position des jambes varie.
Pièces jointes
ScreenShot057.jpg
ScreenShot057.jpg (86.69 Kio) Consulté 3679 fois
ScreenShot058.jpg
ScreenShot058.jpg (103.27 Kio) Consulté 3679 fois
ScreenShot059.jpg
ScreenShot059.jpg (108 Kio) Consulté 3679 fois

Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

Re: 4 animations sur un perso , 1 animation qui bouge

Message par freepl » 19 Mars 2020 10:12

Personne ?

Avatar de l’utilisateur
jmhoubre
Messages : 856
Inscription : 05 Oct 2019 22:05

Re: 4 animations sur un perso , 1 animation qui bouge

Message par jmhoubre » 19 Mars 2020 16:50

Bonjour,
j'ai de nouveau regardé ton code. Dernier truc qui me chiffonne : le switch. De ce que j'ai compris, la valeur de case est la vitesse multipliée par 10 arrondi et casté en integer ((int)Mathf.Round(trajetVl.kmh*10)). Les cas gérés sont 7, 6,5 et 6,3 km/h. Toutes les autres vitesses vont dans le default et génèrent un arrêt du cycliste : 10 km/h par exemple, ou 5 etc...
J'avoue que j'ai du mal à comprendre à quoi cela correspond.
J'aurai défini un enum avec {STOP, LEFT, RIGHT et FORWARD}

Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

Re: 4 animations sur un perso , 1 animation qui bouge

Message par freepl » 30 Mars 2020 15:26

Bonjour
Je cherche toujours.
Seul le passage de 6.5 à 7 km/h pose pb.
J'ai essayé de faire une coroutine qui dit si V=7 alors on joue l'animation d'arret pendant 0 sec, puis on joue l'animation de Roule.
Ainsi, l'animation de 6.5 à 7 km/h passe par l'animation Arret

Mais cela ne fonctionne pas car on reste sur l'animation ARRET sans lancement de l'animation Roule.
Comment la modifier svp?

Merci

Code : Tout sélectionner

using UnityEngine;
using System.Collections;


/*     7 km pour rouler
 *     6.5 pour tourner à gauche
 */

public class VeloAnimationBrasPourTourner : MonoBehaviour {
	// pour les nouveaux personnages à 3 animations
	private TrajetVl trajetVl;
	public Animation anim;
	public string arret,roule, gauche;//arret, roule,gauche,droit;
	public bool chien;
	
	void Start () {
		if (chien)
			trajetVl = transform.parent.parent.GetComponent<TrajetVl>();
		else 
			trajetVl = transform.parent.GetComponent<TrajetVl>();
	}


	IEnumerator CoroutineArretPuisRoule()
	{
		//lance l'anim d'arret pendant 0sec.
		anim.Play(arret);
		
		//attente 5 seconde.
		yield return new WaitForSeconds(0);
		
		//lance l'anim roule.
		anim.Play(roule);
	}



	
	// Update is called once per frame
	void Update () {
		switch((int)Mathf.Round(trajetVl.kmh*10))
		{
		case (70): // vitesse égale 7 km/h sur le déclencheur
			StartCoroutine(CoroutineArretPuisRoule());
			break;
		case (65): // vitesse égale 6.5 km/h sur le déclencheur
			anim.Play(gauche);
			break;
 
		case (0): // vitesse égale 0 km/h sur le déclencheur
			anim.Play(arret);
			break;




	default :
			anim.Play(arret);
			break;
		}
	
	}
	}

Avatar de l’utilisateur
freepl
Messages : 1034
Inscription : 20 Mai 2012 19:33
Localisation : salon de provence

Re: 4 animations sur un perso , 1 animation qui bouge

Message par freepl » 30 Mars 2020 18:08

Re bonjour

En modifiant le temps d' attente , j' ai vu que le pb vient de l'animaion Roule.

Le code lance bien l'animation Arret, puis l' animation Roule se charge, mais celle-ci ne tourne pas en loop.

Que dois-je modifier ?

Merci

Code : Tout sélectionner

using UnityEngine;
using System.Collections;


/*     7 km pour rouler
 *     6.5 pour tourner à gauche
 */

public class VeloAnimationBrasPourTourner : MonoBehaviour {
	// pour les nouveaux personnages à 3 animations
	private TrajetVl trajetVl;
	public Animation anim;
	public string arret,roule, gauche;//arret, roule,gauche,droit;
	public bool chien;
	
	void Start () {
		if (chien)
			trajetVl = transform.parent.parent.GetComponent<TrajetVl>();
		else 
			trajetVl = transform.parent.GetComponent<TrajetVl>();
	}
	
	
	IEnumerator CoroutineArretPuisRoule()
	{
		//lance l'anim d'arret pendant 0sec.
		anim.Play(arret);
		
		//attente 2 secondes pour le test.
		yield return new WaitForSeconds(2);
		
		//lance l'anim roule.
		anim.Play(roule);
	}
	
	
	
	
	// Update is called once per frame
	void Update () {
		switch((int)Mathf.Round(trajetVl.kmh*10))
		{
		case (70): // vitesse égale 7 km/h sur le déclencheur
			StartCoroutine(CoroutineArretPuisRoule());
			break;
		case (65): // vitesse égale 6.5 km/h sur le déclencheur
			anim.Play(gauche);
			break;
			
		case (0): // vitesse égale 0 km/h sur le déclencheur
			anim.Play(arret);
			break;
			
			
			
			
		default :
			anim.Play(arret);
			break;
		}
		
	}
}

Répondre

Revenir vers « Unity le logiciel »