Noticias

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

Aparecer recuadro con "Reaparecer" al morir.

Iniciado por ramunda, Julio 02, 2015, 05:49:20 PM

Tema anterior - Siguiente tema
Cita de: Howling Wolf date=1436279229Ando rebuscando info, ya que tarde o temprano tenia que actualizarme a unity 5 y me has picado jajaja.
 
Por lo que he leido hasta ahora parece que ha cambiado como imaginaba, cada vez lo complican más xD
 
Voy a ver si doy con la forma de hacerlo funcionar.
 
Asi esss esto del unity 5 me lleva de cabeza hahahha yo estoy tambien buscado aver que demonios.....gracias por tu tiempoo espero que lo encuentres porque yo...no tengo suerte

Julio 07, 2015, 05:06:55 PM #46 Ultima modificación: Julio 07, 2015, 05:11:28 PM por Howling Wolf
Vale ya lo he conseguido, que poco intuitivo lo han puesto, te explico...
 
En primer lugar te digo que está en javascript, lo siento pero es mi lenguaje, así que tendrás que traducir un poco xD
 
Ok, una variable de clase

public var die : AnimationClip;

Y a continuación tu código del Update

 if(currentHealth <= 0 && !muerto ){
muerto = true;
GetComponent<AudioSource>().PlayOneShot(deathClip);length =7f;
GetComponent<FPSInputController>().enabled = false;
GetComponent<CharacterController>().enabled = false;
var anim = GetComponent.<Animation>();
anim.AddClip(die, "die");
anim.Play("die");
  }

Primero tienes que añadir la animación (el clip, no el gameObject) a la variable die en el inspector.
Y segundo lo que más me ha costado. Seleccionas el clip para que aparezca en el inspector, haces clic derecho a la propia pestaña de inspector y seleccionas Debug. Así se extienden las propiedades y puedes seleccionar Legacy.
 
Así a mi me funciona y puedes añadir tantas animaciones como quieras con AddClip.
 
Prueba y me comentas.
 
EDITO: Cuando te funcione lo mejor que es añadas los clips en la funcion Start, así ya estarán precargados.

Cita de: Howling Wolf date=1436281615Vale ya lo he conseguido, que poco intuitivo lo han puesto, te explico...
 
En primer lugar te digo que está en javascript, lo siento pero es mi lenguaje, así que tendrás que traducir un poco xD
 
Ok, una variable de clase

public var die : AnimationClip;

Y a continuación tu código del Update

 if(currentHealth <= 0 && !muerto ){
muerto = true;
GetComponent<AudioSource>().PlayOneShot(deathClip);length =7f;
GetComponent<FPSInputController>().enabled = false;
GetComponent<CharacterController>().enabled = false;
var anim = GetComponent.<Animation>();
anim.AddClip(die, "die");
anim.Play("die");
  }

Primero tienes que añadir la animación (el clip, no el gameObject) a la variable die en el inspector.
Y segundo lo que más me ha costado. Seleccionas el clip para que aparezca en el inspector, haces clic derecho a la propia pestaña de inspector y seleccionas Debug. Así se extienden las propiedades y puedes seleccionar Legacy.
 
Así a mi me funciona y puedes añadir tantas animaciones como quieras con AddClip.
 
Prueba y me comentas.
 
EDITO: Cuando te funcione lo mejor que es añadas los clips en la funcion Start, así ya estarán precargados.
 
Pues la hemos liado...

A ver si puedo yo, pero esto si que dudo que lo consiga, porque se me da fatal C#

Vale no era muy complicado
 
Variable de clase

public AnimationClip die;

Y en update

var anim = GetComponent<Animation>();
anim.AddClip(die,"die");
anim.Play("die");

De nuevo me funciona con este script de C#

Cita de: Howling Wolf date=1436286279A ver si puedo yo, pero esto si que dudo que lo consiga, porque se me da fatal C#
 
La primera parte esta clara:
 
Esto es esto:
 
public AnimationClip Die;

Cita de: Howling Wolf date=1436286882Vale no era muy complicado
 
Variable de clase

public AnimationClip die;

Y en update

var anim = GetComponent<Animation>();
anim.AddClip(die,"die");
anim.Play("die");

De nuevo me funciona con este script de C#
Madre mia ...que envidia mas sana me das..juer que maquina...me encantaria celebrarlo..pero no funca...
 
The animation state die could not be pla*** because it couldn't be found!
Please attach an animation clip with the name 'die' or call this function only for existing animations.
UnityEngine.Animation:Play(String)
 
Cuando llama a la animación no la encuentra y tengo el Animation com me digistes solo con la principal...
 
Cre que busca el String osea la 1 la 2 o algo asi..puede ser?

Ese es uno de los errores que me daba cuando estaba probando y, aunque no recuerdo exactamente cuando me lo dio si que detecto que mezclaste dos cosas. Para este último experimento no tienes que asociar el clip al default del Animation, solamente tienes que meter el clip en la variable die.
 
Hagamos una cosa, que es como fui haciéndolo yo. Comenta la última linea y comprueba que al iniciar la aplicacion se asocia correctamente el clip justo debajo del default del Animation.

Cita de: Howling Wolf date=1436288007Ese es uno de los errores que me daba cuando estaba probando y, aunque no recuerdo exactamente cuando me lo dio si que detecto que mezclaste dos cosas. Para este último experimento no tienes que asociar el clip al default del Animation, solamente tienes que meter el clip en la variable die.
 
Hagamos una cosa, que es como fui haciéndolo yo. Comenta la última linea y comprueba que al iniciar la aplicacion se asocia correctamente el clip justo debajo del default del Animation.
 
Creo que te he entendido , he quitado la "default" de Animation, ahora esta en None, e puesto la die animación en la variable die, he arrancad el game en ventanica para ver el inspector y no no se asocia a el animator, creo que era esa la prueba no?
 
Gracias de antemano, sigo esperando mas ideas

Eso mismo es lo que temía, ya que el error te decía textualmente que solo puedes llamar strings que han sido asociados previamente. Pero esto si que no tiene sentido ninguno, ya que si has escrito exactamente el código que te puse, que baje alguien y me diga porque a mi me funciona y a ti no.
 
Además es que no tiene misterio.
anim.AddClip/*Añade el clip de*/(die/*La animación de la variable die*/,"die"/*Que ahora tendrá como string "die"*/);
anim.Play("die");
 
Comprueba que no tengas un error de sintaxis, otra cosa no se me ocurre socio.

Cita de: Howling Wolf date=1436290848Eso mismo es lo que temía, ya que el error te decía textualmente que solo puedes llamar strings que han sido asociados previamente. Pero esto si que no tiene sentido ninguno, ya que si has escrito exactamente el código que te puse, que baje alguien y me diga porque a mi me funciona y a ti no.
 
Además es que no tiene misterio.
anim.AddClip/*Añade el clip de*/(die/*La animación de la variable die*/,"die"/*Que ahora tendrá como string "die"*/);
anim.Play("die");
 
Comprueba que no tengas un error de sintaxis, otra cosa no se me ocurre socio.
 
Te adjunto el fragmento de codigo y la foto de como lo tengo..exactamente como tu me has dicho lo unico que he probado es de cambian la animacion de "Humanoid" a legazy y ahora no sale el error, pero tampoco se asocia a el Animator , ni se ejecuta la animacion ((, tu como la tienes?

if(currentHealth <= 0 && !muerto ){
         muerto = true;
         GetComponent<AudioSource>().PlayOneShot(deathClip);length =7f;
         GetComponent<FPSInputController>().enabled = false;
         GetComponent<CharacterController>().enabled = false;
         var anim = GetComponent<Animation>();
         anim.AddClip(die,"die");
         anim.Play("die");

y la de arriba

public AnimationClip die;

y todo el codigo por si acasooo

using UnityEngine;
using System.Collections;
public class PlayerInfo : MonoBehaviour {

public GameObject healthBottle;
public GameObject player;
public AudioClip deathClip;
public AudioClip deathClip2;
public float length;
public AnimationClip die;
int health = 100;
int damageCount = 0;
int currentHealth;
bool playerFighting;
public GUIText healthbar;
float timer = 0.0f;
float healthTimer = 0.0f;
bool healthShouldRespawn = false;

public bool muerto = false;
public GameObject tuUI;

void Start () {
   currentHealth = health;
   tuUI.SetActive(false);
   }

void Update () {
   Cursor.visible = false;
   print("player in combat? " + playerFighting);
   if(!playerFighting){
      print("player is not fighting");
      if(currentHealth != 100){
         timer += Time.deltaTime;
         print ("timer: " + timer);
         if(timer > 90.0f){
            currentHealth += 10;
            timer = 0.0f;
         }
      }
   }
   else
   {
      if(currentHealth <= 0 && !muerto ){
         muerto = true;
         GetComponent<AudioSource>().PlayOneShot(deathClip);length =7f;
         GetComponent<FPSInputController>().enabled = false;
         GetComponent<CharacterController>().enabled = false;
         var anim = GetComponent<Animation>();
         anim.AddClip(die,"die");
         anim.Play("die");
         
      }
   }
   healthbar.text = "Vida " + currentHealth + " / 100";
   
   if(healthShouldRespawn)
   {
      healthTimer += Time.deltaTime;
      
      if(healthTimer > 5.0f)
      {
         healthBottle.gameObject.SetActive(true);
         healthTimer = 0.0f;
      }
   }
   
   if(muerto){
      Cursor.visible = true;
      tuUI.SetActive(true);
      if(Input.GetKeyDown(KeyCode.Space)){
         Respawn();
      }
   }
   
}

public void ApplyDamage(int damage){
   damageCount = damageCount + damage;
   if(damageCount == 100){
      if(currentHealth < 0){
         currentHealth = 0;
      }
      currentHealth = currentHealth - 30;
      GetComponent<AudioSource>().PlayOneShot(deathClip);length =7f;
      healthbar.text = "Health " + currentHealth + " / 100";
      damageCount = 0;
   }
   
   print(currentHealth);
}

public void playerInCombat(int combat){
   if(combat == 1){
      playerFighting = true;
   }
   else
   {
      playerFighting = false;
   }
}

public void Respawn(){
   tuUI.SetActive(false);
   muerto = false;
   transform.position = new Vector3(Random.Range(50.0f, 120.0f), 0, Random.Range(10.0f, 200.0f));
   GetComponent<FPSInputController>().enabled = true;
   GetComponent<CharacterController>().enabled = true;
   ///GetComponent<disparosyrecargos>().enabled = true;
   ////GetComponent<MouseLook>().enabled = true;
   currentHealth = 100;
}

void OnTriggerEnter(Collider item){
   if(item.gameObject.tag == "PlayerHealthBottle")
   {
      if(currentHealth < 100)
      {
         currentHealth = currentHealth + 50;
         item.gameObject.SetActive(false);
         healthShouldRespawn = true;
      }
   }
}
}

y la foto de la animaCion!!!

Aver compi....he descubierto algo....no caimos en una cosa.Mira esto:

else
   {
      if(currentHealth <= 0 && !muerto ){
         muerto = true;
         GetComponent<AudioSource>().PlayOneShot(deathClip);length =7f;
         GetComponent<FPSInputController>().enabled = false;
         GetComponent<CharacterController>().enabled = false;
      }
   }

Linea 46, si la vida es = a 0....&& !muerto....te lleva directamente al muerto!! , entonces se nos saltaba esta parte que le añadiamos....la he puesto aqui:

if(muerto){
      var anim = GetComponent<Animation>();
      anim.AddClip(Die,"die");
      anim.Play("die");
      Cursor.visible = true;
      tuUI.SetActive(true);
      if(Input.GetKeyDown(KeyCode.Space)){
         Respawn();
      }
   }

Ahora si añade la animación die en el animator....pero no el la general sino en la string 1, pero sigui sin verse la animacion!!!!!!!!! sale el text guy sale todo!!! pero no la jodia animacion_!!!!!!!!!
 
 
 
(((

Me di cuenta de que nada más empezar cambiabas la booleana muerto, pero no le hice mucho caso porque si te reproducia los sonidos.
 
Y sí, es en el array de animaciones donde tiene que aparecer, no en el default. Y dices que asignando bien el clip no te da ningun error y sigue sin reproducir la animacion? Joder como se hace de rogar, espero que el clip no esté vacío, sino te mato jajajajaja
 
Te he subido el proyecto para que lo pruebes tal cual está, ya por descartar, no se.
 
https://mega.nz/#!ss8wGToD!VDw0txJy4q3uOrjOf4fUNbcwEy0f4tJvK1DARXpadKs" rel="external nofollow">https://mega.nz/#!ss8wGToD!VDw0txJy4q3uOrjOf4fUNbcwEy0f4tJvK1DARXpadKs

Cita de: Howling Wolf date=1436295323Me di cuenta de que nada más empezar cambiabas la booleana muerto, pero no le hice mucho caso porque si te reproducia los sonidos.
 
Y sí, es en el array de animaciones donde tiene que aparecer, no en el default. Y dices que asignando bien el clip no te da ningun error y sigue sin reproducir la animacion? Joder como se hace de rogar, espero que el clip no esté vacío, sino te mato jajajajaja
 
Te he subido el proyecto para que lo pruebes tal cual está, ya por descartar, no se.
 
https://mega.nz/#!ss8wGToD!VDw0txJy4q3uOrjOf4fUNbcwEy0f4tJvK1DARXpadKs" rel="external nofollow">https://mega.nz/#!ss8wGToD!VDw0txJy4q3uOrjOf4fUNbcwEy0f4tJvK1DARXpadKs
 
Jur la pelotilla XDDDD muy bueno hahahhah ...la naimación la has echo tu no?, porque no se puede reproducir con un play ni nada xd me dice this model is not availiable for prevou tal y tal....
 
 
aix nose , tambien al poner los scripts donde muerto...los sonidos no se paran la animacion no funciona esto es frustrante...voy a provar de crear una animacion cualquiera aver si furula...
 
 
 

Joder, si es una esfera normal hecha en unity y el proyecto te lo he pasado tal cual lo tengo yo.
 
Al final me hago minero macho jajaja

Etiquetas: