[DB-AL] retour à l'animation d'origine

Pour les scripts écrits en Javascript (UnityScript). :!: Obsolète :!:
Règles du forum
Merci de respecter la NOMENCLATURE suivante pour vos TITRES de messages :

Commencez par le niveau de vos scripts
DB = Débutant
MY = Moyen
CF = Confirmé

Puis le domaine d'application
-RS = Réseau
-AL = Algorithmie

Exemple :

[DB-RS] Mouvement perso multijoueur
billmurray
Messages : 2
Inscription : 03 Juil 2016 19:15

[DB-AL] retour à l'animation d'origine

Message par billmurray » 03 Juil 2016 19:23

Bonjour, Alors ça fait très longtemps que je n'ai pas touché à Unity et là, je m'y remets... Et j'essaie de faire une sorte de RPG et donc, il faudra interagir avec des "Civils". Ce que j'ai fait jusqu'à présent fonctionne, mais je bloque sur un détail. Je m'explique :

1. J'ai importé un personnage animé de 3Dsmax vers Unity5.

2. Il a deux anim' genre "Idle" et "speak" que j'ai séparé dans unity sous les noms "Take 001" et "Take 002".

3. Après j'ai créé un "gameemptyobject" dans la hiérarchie du perso que j'ai coché en Trigger. (Une fois à l'intérieur du trigger on appuie sur la barre d'espace pour lancer l'anim' "Take 002".)

Donc, avec le script suivant j'arrive à lancer "Take 002" et un son (la voix)

Code : Tout sélectionner

var voix1 : AudioClip;

function OnTriggerStay (Col : Collider)
{
	if (Input.GetKeyDown("space") && Col.tag == "Player") {
	
	GetComponentInParent.<Animation>().Play("Take 002");
	GetComponent.<AudioSource>().PlayOneShot(voix1);
	}

}
Mais mon souci est que l'anim' s'arrête dès la fin de "Take 002" et du coup, le personnage se fige et ne rejoue pas l'anim par défaut, "Idle" ("Take 001") x/ Le but serait de faire une anim "idle", une anim "discussion", une anim "flippant" et une anim "jetombedanslespommes" :hehe:

Une idée de comment faire pour "revenir à zéro" et jouer Idle?

Note : dans Inspector / Animation j'ai mis le wrap mode de "Take 001" en Loop, et celui de "Take 002" en Once.

Et tant que j'y suis, j'ose une autre question x)

Est-il possible faire "tourner" le perso pour qu'il fasse face au joueur durant l'anim' "Take 002", et qu'il se retourne dans l'autre sens lorsque l'anim' par défaut "Take 001" sera rétablie?


Merci de vos conseils :]
Bonne soirée à tout le monde

:!: Merci d'utiliser les balises code :!:
Lire la Netiquette.

Avatar de l’utilisateur
Iwa
Messages : 1131
Inscription : 25 Avr 2012 16:20
Contact :

Re: [DB-AL] retour à l'animation d'origine

Message par Iwa » 04 Juil 2016 17:50

Salut à toi,

commençons par le commencement, ce que tu souhaites faire se réalise avec l'Animator Mechanim d'Unity. En gros tu définis une machine à états (une suite d'états qui s'organisent entre eux) de tes animations.

Ça va modifier un poil ton code mais l'idée est de changer la valeur d'un Trigger de ta machine à état pour basculer de l'état "Idle" qui jouera ta Take001 à l'état "Speak" qui jouera l'animation Take0002.

Je te conseille de creuser sur le forum il y a des exemples et de jeter un oeil à la doc d'Unity :

https://docs.unity3d.com/Manual/Animator.html
https://www.youtube.com/watch?v=JeZkctmoBPw

En espérant que ça t'aide ;).

Ensuite pour la seconde question je pense qu'il faut coder un petit quelque chose pour forcer le perso à faire un lookAt dans la bonne direction ;)
"N'est stupide que la stupidité Monsieur..." - Forest Gump
... sauf si tu lis pas ça :)

Si tu as tout ce qu'il te faut, merci de penser à basculer ton sujet en [RESOLU] en éditant ton tout premier post ;)

billmurray
Messages : 2
Inscription : 03 Juil 2016 19:15

Re: [DB-AL] retour à l'animation d'origine

Message par billmurray » 04 Juil 2016 19:18

Bonsoir et merci des infos, je vais regarder ça de près. C'est vrai que lorsque j'ai posé ma question je n'ai pas eu le temps de rester sur le forum j'ai du partir. Mais j'imagine qu'il regorge de bonnes astuces alors je vais l'explorer ;-)

Bonne soirée !

Verrouillé

Revenir vers « (Js) Javascript »