Noticias

¡RECUERDA QUE SI ERES UN NUEVO USUARIO, DEBES PRESENTARTE PARA PODER PUBLICAR MENSAJES! | TENEMOS CANAL OFICIAL DE TELEGRAM: t.me/unity3dspain

Duda con animaciones

Iniciado por BennyDz, Noviembre 08, 2015, 06:41:42 PM

Tema anterior - Siguiente tema
Hola amigos en mi script tengo animaciones asi: enemy.animation.Play("Attack_2");enemy.animation.Play("GetHit"); friend.animation.Play("hurt");friend.animation.Play("attack01"); los personajes inician con su IDLE. al momento de atacar o recibir un daño, se quedan sin ninguna animación pierden el idle.mi forma de solucionarlo fue que cuando reproduscan la animacion cuando reciben daño  invoke en cierto tiempo la animacion de idle. pero cuando atacan pasa lo mismo. entonces queria preguntar si hay una forma mas limpia de hacerlo sin tantas invokaciones. algun update que detecte si no hay animacion. o algo asi. o como debe hacer eso.soy nuevo con las animaciones. 

Esa información es exigua, no es posible ayudarte a modificar tu script.

Bye Bye



Noviembre 09, 2015, 12:36:58 AM #2 Ultima modificación: Noviembre 09, 2015, 12:43:55 AM por zorranco
Lanzar animaciones desde código si el objeto a animar es muy simple puede valer, pero para casos más complejos, si por ejemplo necesitas que siempre haya un estado activo o que las animaciones retornen a idle con x condición lo que tienes que hacer es usar mecanim.
 

[quote author=Oak Human Flesh" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34383" data-ipsquote-contentcommentid="123230 date=1447019770]Esa información es exigua, no es posible ayudarte a modificar tu script.[/quote]exigua? y yo tengo el control de mi script. porque no es posible?? solo si saben... que alguien me diga la forma correcta de hacer las animaciones... si es con co-liders.. colisiones.. etc... ni si quiera as visto mi script para decir que no es posible modificarlo haha
[quote author=zorranco" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34383" data-ipsquote-contentcommentid="123231 date=1447025818]Lanzar animaciones desde código si el objeto a animar es muy simple puede valer, pero para casos más complejos, si por ejemplo necesitas que siempre haya un estado activo o que las animaciones retornen a idle con x condición lo que tienes que hacer es usar mecanim.
 [/quote]seria desde animator? o como es eso de mecanim? algo para leer o tutorial bro? o ejemplo

Cita de: BennyDz date=1447051884" data-ipsquote="" data-cite="BennyDz" class="ipsQuoteexigua?y yo tengo el control de mi script. porque no es posible?? ni si quiera as visto mi script para decir que no es posible modificarlo haha
Es eso precisamente lo que te esta diciendo ... como tu mismo dices, no muestras tu script pero quieres que alguien te diga como modificarlo ?

Noviembre 09, 2015, 03:26:24 PM #5 Ultima modificación: Noviembre 09, 2015, 03:42:32 PM por Oak Human Flesh
Hola,  al referir información exigua indico información insuficiente, como podría ser que te indiquemos como aprobar o modificar tu script con fragmentos?. .. sería como tratar de armar un rompecabezas de 1000 piezas o más con 3 piezas.Ok, ahora tenemos algo más con tu réplica. ..En Unity he visto básicamente 3 sistemas de animación. ..Usando el Sistema de animación legacy (con su componente Animation).Usando el Sistema Mecanim (con su componente Animator).Y el último pero muy importante usando directamente el Transform.De este último he visto un ejemplo muy bueno al comprar el UFPS del asset store.De los otros en el manual fácil puedes encontrar info...http://docs.unity3d.com/Manual/AnimationSection.html">http://docs.unity3d.com/Manual/AnimationSection.htmlTambién en la sección de Tutorales en vídeo de Unity esta lo mejor...http://unity3d.com/es/learn/tutorials">http://unity3d.com/es/learn/tutorialsUn manjar. ..Luego YouTube. ... solo buscar animación En Unity o Mecanim Unity y aparece una gran lista de tutoriales o explicaciones, resultado que muy lejos de ser exiguo, es pingüe... entonces puedes tomar solo lo que te sirva para adaptar a tu proyecto y tu versión de Unity y lograr un acabado brillante según tú percepción. Esto es un Arte del cual la creación de la historia es de lo único que no se puede encontrar información. Antes solo hay una nebulosa.Del resto solo son procedimientos y lógicas. 

Bye Bye



using UnityEngine;
using System.Collections;
using System.Collections.Generic;
using Holoville.HOTween;
using Holoville.HOTween.Plugins;






public class GameManager : MonoBehaviour {
    public GameObject goodEffect, badEffect, soulEffect, happyEffect;
    public Animator friendAnimator, enemyAnimator;
    public HpManager friendHpMan, enemyHpMan;


public GameObject enemy;
public GameObject friend;


public GameObject resulAct;
public GameObject resulLoss;
public GameObject des1;
public GameObject des2;
public GameObject des3;
public GameObject des4;
public GameObject des5;

public string preg1;
public string preg2;

public string res1;
public string res2;

    Vector3 friendPos, enemyPos, friendHpPos, enemyHpPos, shieldPos;
    Transform friendHpGroup, enemyHpGroup, shieldGroup;

    Transform questionTf;
    Transform[] answerTfs;
    UILabel questionLabel;
    UILabel[] answerLabels;

    List<QuizData> quizList;
    int quizTotal;
    int quizIndex = 0;

    [HideInInspector]
    public int quizLength = 0;

    bool quizOn = true;

    void Awake()
    {
        Screen.SetResolution(480, 800, false);
    }
    void Start()
    {
        InitGame();
        HideGame();
        //StartGame();
    }

    void HideGame()
    {
        ClearQuiz();
        Vector3 pos = friendPos;
        friendAnimator.transform.localPosition = new Vector3(pos.x * 4f, pos.y, pos.z);
        pos = enemyPos;
        enemyAnimator.transform.localPosition = new Vector3(pos.x * 4f, pos.y, pos.z);
        pos = friendHpPos;
        friendHpGroup.localPosition = new Vector3(pos.x * 3f, pos.y, pos.z);
        pos = enemyHpPos;
        enemyHpGroup.localPosition = new Vector3(pos.x * 3f, pos.y, pos.z);
        shieldGroup.localScale = new Vector3(2f, 2f, 1f);
        pos = shieldPos;
        shieldGroup.localPosition = new Vector3(pos.x, 0f, pos.z);
    }

    void StartGame()
    {
        IntroGame();
        DrawQuiz();
    }

    void DrawQuiz()
    {
        HideQuiz();
        StartCoroutine(DelayActoin(1f, () =>
        {
            SetQuiz();
            ShowQuiz();
        }));
    }

    void QuizInit()
    {
        quizList = new List<QuizData>();
        List<string> champs = new List<string>();
        string[,] dic = LolSkillData3.dic;
        for (int i = 0; i < dic.GetLength(0); i++)
        {
            string champ = dic[i,2];
            if (!champs.Contains(champ)) champs.Add(champ);
        }
        for (int i = 0; i < dic.GetLength(0); i++)
        {
            string idx = dic[i, 0];
            string skill = dic[i, 1];
            string champ = dic[i, 2];
            QuizData quiz = new QuizData();

            int t = champs.IndexOf(champ);
            List<int> ansIdList = new List<int>();
            Hashtable ansValList = new Hashtable();
            ansValList[0] = champs[t];
            ansValList[1] = champs[(t+1)%champs.Count];
            ansValList[2] = champs[(t+2)%champs.Count];
            ansValList[3] = champs[(t+3)%champs.Count];
            for (int j = 0; j < 4; j++) ansIdList.Add(j);
            ansIdList.Shuffle();
            for (int j = 0; j < 4; j++)
                if (ansIdList[j] == 0) quiz.correct = j;
            quiz.answer1 = "1. " + ansValList[ansIdList[0]] as string;
            quiz.answer2 = "2. " + ansValList[ansIdList[1]] as string;
            quiz.answer3 = "3. " + ansValList[ansIdList[2]] as string;
            quiz.answer4 = "4. " + ansValList[ansIdList[3]] as string;
            quiz.question = skill + "?";
            quiz.id = int.Parse(idx);
            quizList.Add(quiz);
        }
        quizTotal = quizList.Count;
    }

    void InitGame()
    {
        friendHpMan.InitHp();
        enemyHpMan.InitHp();
        questionTf = GameObject.Find("Question").transform;
        questionLabel = questionTf.GetComponentInChildren<UILabel>();
        answerLabels = new UILabel[4];
        answerTfs = new Transform[4];
        int i = 0;
        foreach (Transform tf in GameObject.Find("Answers").transform)
        {
            answerTfs = tf;
            answerLabels = tf.GetComponentInChildren<UILabel>();
            i++;
        }
        QuizInit();

        shieldGroup = GameObject.Find("ShieldGroup").transform;
        shieldPos = shieldGroup.localPosition;
        friendPos = friendAnimator.transform.localPosition;
        enemyPos = enemyAnimator.transform.localPosition;
        friendHpGroup = friendHpMan.hpBar.transform.parent;
        enemyHpGroup = enemyHpMan.hpBar.transform.parent;
        friendHpPos = friendHpGroup.localPosition;
        enemyHpPos = enemyHpGroup.localPosition;
    }

    void IntroGame()
    {
        friendAnimator.CrossFade("Walk", 0.2f);
        enemyAnimator.CrossFade("Walk", 0.2f);
        Vector3 pos = friendPos;
        friendAnimator.transform.localPosition = new Vector3(pos.x * 4f, pos.y, pos.z);
        TweenParms parms = new TweenParms().Prop("localPosition", friendPos).Ease(EaseType.Linear).OnComplete(OnFriendStop);
        HOTween.To(friendAnimator.transform, 2f, parms);
       
        pos = enemyPos;
        enemyAnimator.transform.localPosition = new Vector3(pos.x * 4f, pos.y, pos.z);
        parms = new TweenParms().Prop("localPosition", pos).Ease(EaseType.Linear).OnComplete(OnEnemyStop);
        HOTween.To(enemyAnimator.transform, 2f, parms);

        pos = shieldPos;
        shieldGroup.localPosition = new Vector3(pos.x, 0f, pos.z);
        parms = new TweenParms().Prop("localPosition", pos).Delay(1f);
        HOTween.To(shieldGroup, 1f, parms);

        shieldGroup.localScale = new Vector3(2f, 2f, 1f);
        parms = new TweenParms().Prop("localScale", new Vector3(0.8f, 0.8f, 1f));
        HOTween.To(shieldGroup, 1f, parms);

        pos = friendHpPos;
        friendHpGroup.localPosition = new Vector3(pos.x * 3f, pos.y, pos.z);
        parms = new TweenParms().Prop("localPosition", pos).Delay(0.5f);
        HOTween.To(friendHpGroup, 1f, parms);

        pos = enemyHpPos;
        enemyHpGroup.localPosition = new Vector3(pos.x * 3f, pos.y, pos.z);
        parms = new TweenParms().Prop("localPosition", pos).Delay(0.5f);
        HOTween.To(enemyHpGroup, 1f, parms);
    }

    void OnFriendStop()
    {
        //friendAnimator.CrossFade("Idle", 0.2f);
   friend.animation.CrossFade("defense", 0.2f);
    }
    void OnEnemyStop()
    {
       // enemyAnimator.CrossFade("Idle", 0.2f);
   enemy.animation.CrossFade("Idle_1", 0.2f);
    }

    void ClearQuiz()
    {
        questionTf.localScale = new Vector3(0f, 1f, 1f);
        int i = -1;
        foreach (Transform tf in answerTfs)
        {
            tf.localPosition = new Vector3(900f * i, tf.localPosition.y, tf.localPosition.z);
            i *= -1;
        }
    }

    void HideQuiz()
    {
        TweenParms parms = new TweenParms().Prop("localScale", new Vector3(0f, 1f, 1f));
        HOTween.To(questionTf, 0.5f, parms);
        int i = -1;
        foreach (Transform tf in answerTfs)
        {
            parms = new TweenParms().Prop("localPosition", new Vector3(900f * i, tf.localPosition.y, tf.localPosition.z));
            HOTween.To(tf, 0.5f, parms);
            i *= -1;
        }
    }

    void TypeQuiz()
    {
        questionLabel.text = quizList[quizIndex].question.Substring(0, quizLength);
    }

    void ShowQuiz()
    {
        TweenParms parms = new TweenParms().Prop("localScale", new Vector3(1f, 1f, 1f));
        HOTween.To(questionTf, 0.5f, parms);
        int i = 1;
        foreach (Transform tf in answerTfs)
        {
            parms = new TweenParms().Prop("localPosition", new Vector3(0f, tf.localPosition.y, tf.localPosition.z)).Delay(0.3f * i++);
            HOTween.To(tf, 0.5f, parms);
        }
        quizOn = true;

        quizLength = 0;
        parms = new TweenParms().Prop("quizLength", quizList[quizIndex].question.Length).Ease(EaseType.Linear).OnUpdate(TypeQuiz);
        HOTween.To(this, 1f, parms);
    }

    string QuizMakeString(string str)
    {
        return (str.Length > 41) ? str.Substring(0, 40) : str;
    }

    void SetQuiz()
    {
        quizIndex = Random.Range(0, quizTotal) % quizTotal;
        QuizData item = quizList[quizIndex];
        answerLabels[0].text = QuizMakeString(item.answer1);
        answerLabels[1].text = QuizMakeString(item.answer2);
        answerLabels[2].text = QuizMakeString(item.answer3);
        answerLabels[3].text = QuizMakeString(item.answer4);
        questionLabel.text = item.question;
    }
   
void Update () {
        if (Input.GetKeyDown(KeyCode.Escape)) Application.Quit();
        if (Input.GetButton("Fire1"))
        {
            //DrawQuiz();
        }
}




    void ClickAnswer(int no)
    {



        if (!quizOn) return;
        quizOn = false;
        QuizData item = quizList[quizIndex];
        if (item.correct == no)
        {
            Instantiate(goodEffect);
            GameObject go = Instantiate(soulEffect) as GameObject;
            go.GetComponent<SoulEffect>().posX = -1f;
            StartCoroutine(DelayActoin(0.6f, () =>
            {
                go = Instantiate(happyEffect, new Vector3(-0.7f, 1f, 0f), Quaternion.identity) as GameObject;
         PlayerPrefs.SetInt("Puntaje",PlayerPrefs.GetInt("Puntaje")+ 1);
         //Debug.Log("Tu puntaje es de "+ PlayerPrefs.GetInt("Puntaje"));
         PlayerPrefs.SetInt("vidaEnemy",PlayerPrefs.GetInt("vidaEnemy")+ 1);

   
         if    (PlayerPrefs.GetInt("vidaEnemy") == 10) {
                Invoke("OnGameStopWin", 5);
         Invoke("EnemyDied", 0.5f);
         friend.animation.Play("attack01");
         des1.SetActive(false);
         des5.SetActive(false);}
         else{
          friend.animation.Play("attack01");
                Invoke("EnemyRecivedHit", 0.5f);
         
                }
         
if (friend.animation.IsPlaying("defense") == true){

Debug.Log("Hello");}

            }));
            friendAnimator.CrossFade("Good", 0.2f);
            enemyAnimator.CrossFade("Bad", 0.2f);
        }
        else
        {
            Instantiate(badEffect);
            GameObject go = Instantiate(soulEffect) as GameObject;
            go.GetComponent<SoulEffect>().posX = 1f;
            StartCoroutine(DelayActoin(0.6f, () =>
            {
                go = Instantiate(happyEffect, new Vector3(0.7f, 1f, 0f), Quaternion.identity) as GameObject;
               
         PlayerPrefs.SetInt("vida",PlayerPrefs.GetInt("vida")+ 1);

         
if    (PlayerPrefs.GetInt("vida") == 3) {
Invoke("OnGameStopLoss", 5);
Invoke("FriendDied", 0.7f);
enemy.animation.Play("Attack_2");
}
else {
Invoke("FriendRecivedHit", 0.7f);
enemy.animation.Play("Attack_2");
}




            }));
            friendAnimator.CrossFade("Bad", 0.2f);
            enemyAnimator.CrossFade("Good", 0.2f);
        }


        StartCoroutine(DelayActoin(3f, () =>
        {
            DrawQuiz();
        }));
    }

       void EnemyDied()
    {
   des1.SetActive(false);
        des5.SetActive(false);
   enemyHpMan.DoDamageHp(10);
   enemy.animation.Play("Die");
    }
    void FriendDied()
    {
        friendHpMan.DoDamageHp(35);
        friend.animation.Play("death");
   des1.SetActive(false);
        des5.SetActive(false);
    }

    void EnemyRecivedHit()
    {
   enemy.animation.Play("GetHit");
   enemyHpMan.DoDamageHp(10);
   Invoke("EnemyRestaure", 1.1f);
    }
    void FriendRecivedHit()
    {
        friend.animation.Play("hurt");
   friendHpMan.DoDamageHp(35);
   Invoke("FriendRestaure", 0.533f);

    }
void FriendRestaure()
    {
   friend.animation.Play("defense");
    }
void EnemyRestaure()
    {
        enemy.animation.Play("Idle_1");
    }   




void OnGameStopLoss()
    {
des2.SetActive(false);
des3.SetActive(false);
des4.SetActive(false);
resulLoss.SetActive(true);
    }
    void OnGameStopWin()
    {
resulAct.SetActive(true);
des2.SetActive(false);
des3.SetActive(false);
des4.SetActive(false);   
    }


    public void OnClickAnswer1()
    {
        ClickAnswer(0);
    }
    public void OnClickAnswer2()
    {
        ClickAnswer(1);
    }
    public void OnClickAnswer3()
    {
        ClickAnswer(2);
    }
    public void OnClickAnswer4()
    {
        ClickAnswer(3);
    }

    public IEnumerator DelayActoin(float dtime, System.Action callback)
    {
        yield return new WaitForSeconds(dtime);
        callback();
    }
}
  Este es mi script, esta algo feito xD! se que estoy usando codigos de mas xD! consiste en un juego de preguntas.que si respondes bien friend ataca y si respondes mal la pregunta el enemigo te ataca.estoy usando animaciones donde detecta si respondio bien o mal. invokacion para el tiempo que tarda en atacar el player reciba el hit. 

Ahora comprendo...Supongo que el friend ataca, y después de que culmina el ataque, a el friend no se le indica que vuelva a la animación Idle, por eso se quedan como momificados los personajes. Desgraciadamente hoy no te puedo ayudar con mi PC y crear o modificar un script para adaptarlo a tu proyecto, tengo bastante trabajo en un B787 software Update.Pero... dependiendo de el instante en que se requiere volver al Idle, se debe poner el código respectivo para que ejecute esta animación, la cual supongo esta configurada como bucle o loop en el inspector de Unity. En mi caso crearía una función para controlar las animaciones, la cual me permita reutilizar código o fácilmente cambiar de sistema de animación,  y por cierto mejorar la interpretación de la lógica humana.  Respecto a el uso de el Invoke () supongo que esta bien si el resultado es inevitable, de lo contrario usar colliders u otro sistema para gatillar las animaciones sería mejor. En mi caso también almacenaria las animaciones y los componentes Animation en una matriz (una para cada una) para luego usarlas.Bueno son ideas, no puedo plasmarlas en código desde mi teléfono móvil, lo siento.  Pero por ahí se va.   

Bye Bye



[quote author=Oak Human Flesh" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34383" data-ipsquote-contentcommentid="123248">Ahora comprendo...Supongo que el friend ataca, y después de que culmina el ataque, a el friend no se le indica que vuelva a la animación Idle, por eso se quedan como momificados los personajes. Desgraciadamente hoy no te puedo ayudar con mi PC y crear o modificar un script para adaptarlo a tu proyecto, tengo bastante trabajo en un B787 software Update.Pero... dependiendo de el instante en que se requiere volver al Idle, se debe poner el código respectivo para que ejecute esta animación, la cual supongo esta configurada como bucle o loop en el inspector de Unity. En mi caso crearía una función para controlar las animaciones, la cual me permita reutilizar código o fácilmente cambiar de sistema de animación,  y por cierto mejorar la interpretación de la lógica humana.  Respecto a el uso de el Invoke () supongo que esta bien si el resultado es inevitable, de lo contrario usar colliders u otro sistema para gatillar las animaciones sería mejor. En mi caso también almacenaria las animaciones y los componentes Animation en una matriz (una para cada una) para luego usarlas.Bueno son ideas, no puedo plasmarlas en código desde mi teléfono móvil, lo siento.  Pero por ahí se va. ;)

Noviembre 14, 2015, 10:18:06 PM #9 Ultima modificación: Noviembre 14, 2015, 10:19:05 PM por Oak Human Flesh
Bueno supongo que lo mas fácil seria agregar al final del Update() la instrucción de ejecutar el Idle, esto dependiendo de si se esta ejecutando alguna animación:
void Update ()
{
    // el codigo ya programado....
   
    // al final del Update revisar si alguna animacion esta siendo ejecutada
    // en el componente respectivo...
   
    // Revisa si ninguna animacion esta siendo ejecutada por dicho componente...
    if (!animationComponentLegacy.isPlaying)
    {
        //... ejecuta la animacion idle.
        animationComponentLegacy.CrossFade("idle", 0.15f);
    }
}
luego probe esto con este script y un Gato animado...
using UnityEngine;
using System.Collections;

public class PlayerCatController : MonoBehaviour {
    private Animation animationComponentLegacy;
    public string[] animClips;
    public string[] controls;
// Use this for initialization
void Start () {
            animationComponentLegacy = gameObject.GetComponentInChildren<Animation>();
}

// Update is called once per frame
void Update ()
        {
            CatControls();

            if (!animationComponentLegacy.isPlaying)
            {
                CatAnimate(0, 0.5f);// play the idle animState
            }
}
    void CatControls()
    {
        for (int i = 0; i < controls.Length; i++)
        {
            if (Input.GetButtonDown(controls))
            {
                CatAnimate(i + 1, 0.3f);
            }
        }
    }

    void CatAnimate(int animID, float fadeTime)
    {
        animationComponentLegacy.CrossFade(animClips[animID], fadeTime);
    }
}
Funciona bien.

Bye Bye



Noviembre 15, 2015, 01:40:56 AM #10 Ultima modificación: Noviembre 15, 2015, 01:41:17 AM por BennyDz
[quote author=Oak Human Flesh" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34383" data-ipsquote-contentcommentid="123498">Bueno supongo que lo mas fácil seria agregar al final del Update() la instrucción de ejecutar el Idle, esto dependiendo de si se esta ejecutando alguna animación:
void Update (){
    // el codigo ya programado....
   
    // al final del Update revisar si alguna animacion esta siendo ejecutada
    // en el componente respectivo...
   
    // Revisa si ninguna animacion esta siendo ejecutada por dicho componente...
    if (!animationComponentLegacy.isPlaying)
    {
        //... ejecuta la animacion idle.
        animationComponentLegacy.CrossFade("idle", 0.15f);
    }
}
luego probe esto con este script y un Gato animado...
using UnityEngine;
using System.Collections;

public class PlayerCatController : MonoBehaviour {
    private Animation animationComponentLegacy;
    public string[] animClips;
    public string[] controls;
// Use this for initialization
void Start () {
            animationComponentLegacy = gameObject.GetComponentInChildren<Animation>();
}

// Update is called once per frame
void Update ()
        {
            CatControls();

            if (!animationComponentLegacy.isPlaying)
            {
                CatAnimate(0, 0.5f);// play the idle animState
            }
}
    void CatControls()
    {
        for (int i = 0; i < controls.Length; i++)
        {
            if (Input.GetButtonDown(controls[i]))
            {
                CatAnimate(i + 1, 0.3f);
            }
        }
    }

    void CatAnimate(int animID, float fadeTime)
    {
        animationComponentLegacy.CrossFade(animClips[animID], fadeTime);
    }
}
Funciona bien. [/quote] FUNCIONO AL 100%pense que te habias olvidado, ahorita precisamente iva retomar mi proyecto y lo iva llenar de invokes. jajajasabes como hacer que cuando reprodusca la animacion de death, ya no reprodusca el idle?si es mucho pedir, ahorita hago algun player pref. que ponga cuando termino la partida. y ya le agrego un if al update que si tiene el player pref ya no reprodusca el idle xD 

Noviembre 15, 2015, 02:12:53 AM #11 Ultima modificación: Noviembre 15, 2015, 02:13:23 AM por Oak Human Flesh
Simple... un bool para la muerte     bool death = false;
    void Update ()
    {
       // other code....
       //................................................................
       
        if(!death)
        {
            if (!animationComponentLegacy.isPlaying)
            {
                animationComponentLegacy.CrossFade("idle", 0.3f);// play the idle animState
            }
        }
     } 

Bye Bye



[quote author=Oak Human Flesh" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34383" data-ipsquote-contentcommentid="123509">Simple... un bool para la muerte ;void Update ()
    {
       // other code....
       //................................................................
       
        if(!death)
        {
            if (!animationComponentLegacy.isPlaying)
            {
                animationComponentLegacy.CrossFade("idle", 0.3f);// play the idle animState
            }
        }
     }[/quote] ya no entendi bien eso del bool xD! ahi esta determinando que : death = false osea q no esta muerto xD en mi script manager tengo que poner el que el bool death pase a true cuando muera? o como?  

si no esta muerto evalúa y ejecuta idle.

Bye Bye



[quote author=Oak Human Flesh" data-ipsquote-contapp="forums" data-ipsquote-contenttype="forums" data-ipsquote-contentclass="forums_Topic" data-ipsquote-contentid="34383" data-ipsquote-contentcommentid="123513">si no esta muerto evalúa y ejecuta idle. :)

Etiquetas: