fonctionnement de IsPlaying

Questions à propos du scripting. Hors Shader, GUI, Audio et Mobile.
Répondre
Zzuutt
Messages : 43
Inscription : 27 Déc 2009 01:50

fonctionnement de IsPlaying

Message par Zzuutt » 04 Mars 2010 23:31

Bonjour,

Je ne comprends pas le fonctionnement de IsPlaying
dans le script si dessous,

le premier appuie sur 'm'
dans le debug j'ai bien anim micro : false
l'animation est bien joue a l'envers

mais au second appui
dans le debug j'ai en permanence anim micro : true

heuuu , pourquoi :?: :?:

Code : Tout sélectionner

var microconnect = true;
function Update () {
	if (Input.GetKeyUp ("m") ) {
		Debug.Log("anim micro :" + animation.IsPlaying("clip_micro") );
			if(!animation.IsPlaying("clip_micro") && microconnect ==true){
				animation["clip_micro"].speed = -1;
				animation["clip_micro"].time = animation["clip_micro"].length; 
				animation.Play("clip_micro");
				microconnect = false;
			}
			else 	if(!animation.IsPlaying("clip_micro") && microconnect ==false){
					animation["clip_micro"].speed = 1;
					animation["clip_micro"].time = 0;
					animation.Play("clip_micro");
					microconnect = true;
				}
	}
}

Avatar de l’utilisateur
giyomuSan
Messages : 1799
Inscription : 09 Déc 2009 14:52
Localisation : Japon

Re: fonctionnement de IsPlaying

Message par giyomuSan » 05 Mars 2010 04:11

et tu la stoppe quand ton anim :D

place ton debug en dehors de ton "If" deja tu verra que ton anim play en continue ..c pour ca que ca reste sur true au 2eme coup

qu'est ce que tu cherche a faire exactement ?

Avatar de l’utilisateur
giyomuSan
Messages : 1799
Inscription : 09 Déc 2009 14:52
Localisation : Japon

Re: fonctionnement de IsPlaying

Message par giyomuSan » 05 Mars 2010 05:21

tiens essayer ca ca devrait marcher ^^

remplace le default001 par le nom de ton clip ;)

Code : Tout sélectionner

    var microconnect = true;
    
    private var animPlay : boolean;
    
    //pour eviter de se faire chier si le nom de ton anim change XD
    private var clipName : String = "Default001";
    
    function Start()
    {
    	animation.wrapMode = WrapMode.Once;	
    	animation.Stop();
    }
    
    function Update () 
    {
    	//Selon le valeur de microconnect on regle les paramtre d anim
    	if (microconnect && !animPlay)
    		AnimParams(clipName,-1,animation[clipName].length);
    	else if (!microconnect && !animPlay)
    		AnimParams(clipName,1,0);
    		
    	animPlay = animation.IsPlaying(clipName);	
    		              
       //Anim State
       Debug.Log("anim playing :" + animation.IsPlaying(clipName));
    }
    
    function LateUpdate()
    {
    	//On joue l anim
    	if(Input.GetKeyUp("m") && !animPlay)
    		AnimPlay(clipName, microconnect);
    	
    }
    
    /************************************************************************************/
    /************************************************************************************/
    
    function AnimParams (animName : String , animSpeed : float , animTime : float)
    {
    	//On regle les parametre pour l anim a jouer
      	animation[animName].speed =  animSpeed;
      	animation[animName].time = animTime;      	
     }
    
    function AnimPlay(animName : String, originalState : boolean)
    {
    	//on jour l anim jusqu'a la fin grace au yield et on la stoppe
    	animation.Play(animName);
    	yield WaitForSeconds(animation[animName].length);
    	animation.Stop(animName);
    	
    	//On oublie pas de permuter la valeur de microconnect, peu mieux 
    	//faire la je pense , pas terrible de traiter microconnect a l interieur de cette fonction
    	//directement
    	if(originalState == true)
    		microconnect = false;
    	else
    		microconnect = true;
    		
    	animation.Stop(animName);
    }

Avatar de l’utilisateur
giyomuSan
Messages : 1799
Inscription : 09 Déc 2009 14:52
Localisation : Japon

Re: fonctionnement de IsPlaying

Message par giyomuSan » 05 Mars 2010 05:24

oups petite erreur ....^^

Code : Tout sélectionner

    var microconnect = true;
    
    private var animPlay : boolean;
    
    //pour eviter de se faire chier si le nom de ton anim change XD
    private var clipName : String = "Default001";
    
    function Start()
    {
    	animation.wrapMode = WrapMode.Once;	
    	animation.Stop();
    }
    
    function Update () 
    {
    	//Selon le valeur de microconnect on regle les paramtre d anim
    	if (microconnect && !animPlay)
    		AnimParams(clipName,-1,animation[clipName].length);
    	else if (!microconnect && !animPlay)
    		AnimParams(clipName,1,0);
    		
    	animPlay = animation.IsPlaying(clipName);	
    		              
       //Anim State
       Debug.Log("anim playing :" + animation.IsPlaying(clipName));
    }
    
    function LateUpdate()
    {
    	//On joue l anim
    	if(Input.GetKeyUp("m") && !animPlay)
    		AnimPlay(clipName, microconnect);
    	
    }
    
    /************************************************************************************/
    /************************************************************************************/
    
    function AnimParams (animName : String , animSpeed : float , animTime : float)
    {
    	//On regle les parametre pour l anim a jouer
      	animation[animName].speed =  animSpeed;
      	animation[animName].time = animTime;      	
     }
    
    function AnimPlay(animName : String, originalState : boolean)
    {
    	//on jour l anim jusqu'a la fin grace au yield et on la stoppe
    	animation.Play(animName);
    	yield WaitForSeconds(animation[animName].length);
    	
    	//On oublie pas de permuter la valeur de microconnect, peu mieux 
    	//faire la je pense , pas terrible de traiter microconnect a l interieur de cette fonction
    	//directement
    	if(originalState == true)
    		microconnect = false;
    	else
    		microconnect = true;
    		
    	animation.Stop(animName);
    }

Zzuutt
Messages : 43
Inscription : 27 Déc 2009 01:50

Re: fonctionnement de IsPlaying

Message par Zzuutt » 05 Mars 2010 12:24

Bonjour,

En fait je veux tout simplement jouer mon anim lors du premier appuie a l'envers
une fois que celle-ci est termine
un second appuie sur la touche lance l'anim a l'endroit
et ainsi de suite

je vais tester ton script
merci :D

Zzuutt
Messages : 43
Inscription : 27 Déc 2009 01:50

Re: fonctionnement de IsPlaying

Message par Zzuutt » 05 Mars 2010 13:23

Merci

j'ai readapte ton script.
Ca m'a permis de comprendre les anim
je pensais que lorsqu'une anim etait arrive a la fin de son time
elle stoppait toute seule

maintenant je sais que non :oops:

Merci

Avatar de l’utilisateur
giyomuSan
Messages : 1799
Inscription : 09 Déc 2009 14:52
Localisation : Japon

Re: fonctionnement de IsPlaying

Message par giyomuSan » 05 Mars 2010 15:31

ne jamais laisser faire l ordi lorsque que tu peu le faire toi meme hehe ,

mais en fait c dans le cas ou tu joue l anim a l envers qu elle stoppe pas , c la qu'etait ton problem en gros.

Zzuutt
Messages : 43
Inscription : 27 Déc 2009 01:50

Re: fonctionnement de IsPlaying

Message par Zzuutt » 06 Mars 2010 22:52

oui exact
une anim joue a l'envers ne se termine jamais.......bizarre quand meme

donky26
Messages : 34
Inscription : 03 Mars 2010 09:45

Re: fonctionnement de IsPlaying

Message par donky26 » 13 Avr 2010 18:07

Yop

Si j'ai bien compris vs faite en sorte de jouer une anim a l'envers après l'avoir jouer a l'endroit, il se trouve que je souhaite faire la même chose mais ton script est du chinois pour moi et je pense que je n'est pas besoin de tout ce que tu utilise dans celui-ci.
Voici mon script:

Code : Tout sélectionner

var porte: GameObject;

function Start(){
	porte.animation.Stop();
}
function OnTriggerStay(other:Collider) {
	if (other.CompareTag("Player")) {
		if(Input.GetKeyDown("e")) {
		porte.animation.Play("animPorteCasier");
		porte.animation["animPorteCasier"].wrapMode=WrapMode.Clamp;
		print("yeah");
		porte.GetComponent(BoxCollider).isTrigger=true;
		print("rentre");
		}
	}
}
je voulais savoir (si sa ne te derenge pas mon ami à plume(ou meme un autre j'aime avoir de nouveaux amis :mrgreen: )) si ya moyen de jouer mon anim à l'enver seulement avec un if (car ton code c du chinois pour moi :D )
merci a vous

Avatar de l’utilisateur
giyomuSan
Messages : 1799
Inscription : 09 Déc 2009 14:52
Localisation : Japon

Re: fonctionnement de IsPlaying

Message par giyomuSan » 18 Avr 2010 15:38

il est pas complique mon script , je fais juste des appel de fonctions en fait pour gerer les clips

ce qu il faut pour jouer ton anim a l envers , c'est >>

- inverser sa vitesse a -1
- regler son point , ou plutot sa frame de depart (genralement ca sera le temps total de l anim , celui ou elle s arrete qd c joue a l endroit)
- Ne pas oublier de stopper l anim jouer a l envers une fois fini

Donc il faut qu a un momnet ds ton script tu regle ses parametre poru que ton anim joue a l envers, une fois fini il faut remttre les parametre comme avant ds el cas ou tu veux rejouer ton anim a l endroit

c'ets tout ce que je fais ds le script , avec un variable boolean qui determine selon trye ou false la maniere dont sera jouer l anim.

Répondre

Revenir vers « Scripting »