[Résolu] [DB-AL] Jouer une animation à l'envers depuis un script.
- TheParadox
- Messages : 84
- Inscription : 12 Juil 2017 19:54
- Localisation : France
[Résolu] [DB-AL] Jouer une animation à l'envers depuis un script.
Bonjour.
Tout est dans le titre.
Comment jouer une animation à l'envers depuis un script ?
Pour la jouer à l'endroit, j'utilise "Animation.Play() ;"
Mais pour la jouer à l'envers... Je suppose qu'il doit y avoir une option à rajouter entre les parenthèses...
Je ne sais pas non plus comment changer sa vitesse d’exécution.
Savez-vous comment faire ?
Tout est dans le titre.
Comment jouer une animation à l'envers depuis un script ?
Pour la jouer à l'endroit, j'utilise "Animation.Play() ;"
Mais pour la jouer à l'envers... Je suppose qu'il doit y avoir une option à rajouter entre les parenthèses...
Je ne sais pas non plus comment changer sa vitesse d’exécution.
Savez-vous comment faire ?
Dernière édition par TheParadox le 19 Juil 2017 15:20, édité 1 fois.
Une seule chose est sûre : rien n'est certain, car cette phrase est un mensonge.
Re: [DB-AL] Jouer une animation à l'envers depuis un script.
Bonsoir,
Ceci dit, si on regarde la doc, à travers la fonction 'speed' (AnimationState.speed),
il est dit ceci: A negative playback speed will play the animation backwards..
Donc à regarder éventuellement de ce coté là...
Le genre de chose que je n'ai jamais essayé.TheParadox a écrit : ↑18 Juil 2017 19:30Comment jouer une animation à l'envers depuis un script ?
Pour la jouer à l'endroit, j'utilise "Animation.Play() ;"
Mais pour la jouer à l'envers...
Ceci dit, si on regarde la doc, à travers la fonction 'speed' (AnimationState.speed),
il est dit ceci: A negative playback speed will play the animation backwards..
Donc à regarder éventuellement de ce coté là...
Pas d'aide par MP, le forum est là pour ça.
En cas de doute sur les bonnes pratiques à adopter sur le forum, consulter la Charte et sa FAQ
- TheParadox
- Messages : 84
- Inscription : 12 Juil 2017 19:54
- Localisation : France
Re: [DB-AL] Jouer une animation à l'envers depuis un script.
J'avoue ne pas avoir trop compris comment ça fonctionne....
A quoi correspond le ["Walk"] , qui a l'air obligatoire ?
J'ai essayé de rajouter ça dans mon script, l'animation ne se lance plus du tout...
A quoi correspond le ["Walk"] , qui a l'air obligatoire ?
J'ai essayé de rajouter ça dans mon script, l'animation ne se lance plus du tout...
Une seule chose est sûre : rien n'est certain, car cette phrase est un mensonge.
- boubouk50
- ModoGenereux
- Messages : 6268
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: [DB-AL] Jouer une animation à l'envers depuis un script.
Ceci est un exemple.
anim["walk"] permet de récupérer la bonne animation, ici appelée walk. Il te faut le remplacer par le nom de ton animation.
anim["walk"] permet de récupérer la bonne animation, ici appelée walk. Il te faut le remplacer par le nom de ton animation.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
- TheParadox
- Messages : 84
- Inscription : 12 Juil 2017 19:54
- Localisation : France
Re: [DB-AL] Jouer une animation à l'envers depuis un script.
Je ne comprend toujours pas....
Au début du script, je déclare une Animation que je nomme "Bonjour" (par exemple), en écrivant
Ensuite, si je me fie à cette page : https://docs.unity3d.com/ScriptReferenc ... speed.html , je dois écrire
.
Qu'est ce que je dois écrire à la place de "Quelquechose" ??
J'ai quand même essayé, ça ne marche pas.
L'animation se joue à l'endroit, et Unity me signale 1 erreur rouge.... mais visiblement pas importante puisque qu'il m'oblige pas à la corriger avant le lancer le "mode jeu".
NullReferenceException: GetRef
DetectorPlate.Start () (at Assets/Standard Assets/Scripts/Objects/Interuptors/DetectorPlate.cs:19)
Je devrais peut être utiliser un Animator, mais malgré tout les tutos que j'ai regardé, je n'arrive pas à le faire fonctionner.....
(Je code en C#).
Au début du script, je déclare une Animation que je nomme "Bonjour" (par exemple), en écrivant
Code : Tout sélectionner
public Animation Bonjour
Code : Tout sélectionner
Bonjour["Quelquechose"].speed = -1 ;
Qu'est ce que je dois écrire à la place de "Quelquechose" ??
J'ai quand même essayé, ça ne marche pas.
L'animation se joue à l'endroit, et Unity me signale 1 erreur rouge.... mais visiblement pas importante puisque qu'il m'oblige pas à la corriger avant le lancer le "mode jeu".
NullReferenceException: GetRef
DetectorPlate.Start () (at Assets/Standard Assets/Scripts/Objects/Interuptors/DetectorPlate.cs:19)
Je devrais peut être utiliser un Animator, mais malgré tout les tutos que j'ai regardé, je n'arrive pas à le faire fonctionner.....
(Je code en C#).
Une seule chose est sûre : rien n'est certain, car cette phrase est un mensonge.
- boubouk50
- ModoGenereux
- Messages : 6268
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: [DB-AL] Jouer une animation à l'envers depuis un script.
Si on avait ton code en entier, peut-être qu'on pourrait t'aider...
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
- TheParadox
- Messages : 84
- Inscription : 12 Juil 2017 19:54
- Localisation : France
Re: [DB-AL] Jouer une animation à l'envers depuis un script.
Code : Tout sélectionner
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class DetectorPlate : MonoBehaviour {
public bool touched ;
public string tag;
public GameObject Influence ;
public Animation On ;
public Animation Attaches;
public bool attaches ;
// Use this for initialization
void Start () {
}
// Update is called once per frame
void Update () {
if (touched) {
Influence.SetActive (true);
On.Play ();
if (!attaches) {
Attaches.Play();
attaches = true;
}
}
else {
Influence.SetActive (false);
if (attaches) {
Attaches.Play (//à l'envers);
attaches = false;
}
}
}
void OnTriggerStay(Collider collider) {
if (collider.GetComponent<Collider>().tag == tag) {
if (collider.GetComponent<ReactShotBlock>().gravity == true) {
touched = true;
}
else {
touched = false ;
}
}
}
void OnTriggerExit(Collider collider) {
if (collider.GetComponent<Collider>().tag == tag) {
touched = false;
}
}
}
Quand elle s'active, on joue l'animation On et Attaches.
Si l'objet ne touche plus la plaque ou que sa gravité se désactive, on joue l'animation Attaches à l'envers.
Là bien sûr, l'animation se joue à l'endroit puisque je ne connais pas la commande pour la jouer à l'envers.
Une seule chose est sûre : rien n'est certain, car cette phrase est un mensonge.
- boubouk50
- ModoGenereux
- Messages : 6268
- Inscription : 28 Avr 2014 11:57
- Localisation : Saint-Didier-en-Bresse (71)
Re: [DB-AL] Jouer une animation à l'envers depuis un script.
Tu n'as qu'un seul clip attaché?
Il faudrait aussi tester si le clip par défaut est associé pour éviter une erreur d'accès...
Ton erreur ligne 19 est résolue? Parce qu'ici, la ligne 19 est celle de l'Update () qui est juste donc, ce doit être une autre ligne maintenant...
Toutes tes variables publiques sont renseignées dans l'Inspector? (Influences, Attaches, On, etc)
Code : Tout sélectionner
Attaches[Attaches.clip.name].speed = -1f;
Ton erreur ligne 19 est résolue? Parce qu'ici, la ligne 19 est celle de l'Update () qui est juste donc, ce doit être une autre ligne maintenant...
Toutes tes variables publiques sont renseignées dans l'Inspector? (Influences, Attaches, On, etc)
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation
- TheParadox
- Messages : 84
- Inscription : 12 Juil 2017 19:54
- Localisation : France
Re: [DB-AL] Jouer une animation à l'envers depuis un script.
Ça à l'air d'être ça.
Mais l'animation, au lieu de se jouer à l'envers, se met directement au début.
En gros, cette animation fait se lever des genres de barres qui attachent l'objet à la plaque.
Quand je la joue à l'endroit, ça fonctionne très bien.
Mais à l'envers, les barres redescendent instantanément au lieu de s'animer.
J'avais lu quelque part qu'il fallait préciser à quel moment de l'animation on voulait la lancer, avec AnimationState.time je crois.
Comme mon animation dure 1 s, j'ai tenté de rajouter : Attaches [Attaches.clip.name].time = 60f .
Mais ça ne fonctionne pas...
Mais l'animation, au lieu de se jouer à l'envers, se met directement au début.
En gros, cette animation fait se lever des genres de barres qui attachent l'objet à la plaque.
Quand je la joue à l'endroit, ça fonctionne très bien.
Mais à l'envers, les barres redescendent instantanément au lieu de s'animer.
J'avais lu quelque part qu'il fallait préciser à quel moment de l'animation on voulait la lancer, avec AnimationState.time je crois.
Comme mon animation dure 1 s, j'ai tenté de rajouter : Attaches [Attaches.clip.name].time = 60f .
Mais ça ne fonctionne pas...
Une seule chose est sûre : rien n'est certain, car cette phrase est un mensonge.
- TheParadox
- Messages : 84
- Inscription : 12 Juil 2017 19:54
- Localisation : France
Re: [Résolu] [DB-AL] Jouer une animation à l'envers depuis un script.
C'est bon j'ai trouvé.
Il fallait marquer : Attaches[Attaches.clip.name].time = 1 ;
Il faut donc marquer le temps en secondes.
Merci pour l'aide !
Il fallait marquer : Attaches[Attaches.clip.name].time = 1 ;
Il faut donc marquer le temps en secondes.
Merci pour l'aide !
Une seule chose est sûre : rien n'est certain, car cette phrase est un mensonge.