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

Julio 06, 2015, 08:34:37 PM #31 Ultima modificación: Julio 06, 2015, 08:56:13 PM por ramunda
Hola Howling Gracias por la contestación.
 
Pero esque me estoy volviendo tonto...
 
Mira esto , ahora es JS....quiero llamar una animación de recarga y no da error pero no funciona!!!
 
Mira este es el codigo:

var Bala : Rigidbody;
var Velocidad = 80;
static var Municion = 20;
var MunicionDeRecargo = 20;
static var MunicionTotal = 150;
var Conteo = 0;
var guimuni : GUIText;
public var guitotal : GUIText;
var destello : GameObject;
var manoanim : GameObject;
//var municionanim : GameObject;
//var sonido : AudioClip;
var recarga : AudioClip;
var gunShot : AudioClip;
var vacio: AudioClip;
function Start(){
destello.active = false;
}
function Update(){
guimuni.text = "Balas " + Municion.ToString();
guitotal.text = "Total Balas " + MunicionTotal.ToString();
    if (Input.GetButton("Fire1")){
       
        Conteo = Conteo + 1;
       
    if(Conteo > 20){
    
     Conteo = 0;
}   
    if(Conteo == 20 && Municion > 0 && MunicionTotal >= 0){
          
        var clona = Instantiate(Bala, transform.position, transform.rotation);
   clona.velocity = transform.TransformDirection(Vector3(0, 0, Velocidad));
         Municion -= 1;
         Destroy (clona.gameObject, 1);      
   AudioSource.PlayClipAtPoint(gunShot, transform.position, 1);AudioListener.volume = 0.1f;
}
}
if(Input.GetKeyDown("r") && MunicionTotal > 0 && !Input.GetMouseButton(0) && !Input.GetMouseButton(1)){
    
GetComponent.<Animation>().Play("Reload");
    Municion = 0;
    Invoke ("recargando",2);
    //GetComponent.Animator();
    AudioSource.PlayClipAtPoint(recarga, transform.position, 1);
 
}
if(Input.GetMouseButtonDown(0)){
///AudioSource.PlayClipAtPoint(vacio, transform.position, 1);
destello.active = true;
}
else
if(Input.GetMouseButtonUp(0)){
//AudioSource.PlayClipAtPoint(vacio, transform.position, 1);
destello.active = false;
}   
if (Municion <= 0){
if(Input.GetMouseButtonUp(0)){
AudioSource.PlayClipAtPoint(vacio, transform.position, 1);
destello.active = false;
}   
}
}
function recargando (){
if(MunicionTotal > 0){
MunicionTotal -= MunicionDeRecargo;
Municion += MunicionDeRecargo;
}
if (Municion > MunicionDeRecargo){
Municion = MunicionDeRecargo;
}
}

en la linea 43 llamo a la tecla "R" , seguidamente le digo que me arranque la animación Reload previamente puesta  con su animator.....
 
Pues no me hace ni santo casoooo
 
Hay madre me estoy desanimando, no me funciona ni esta ni la otra de cuando muere de arriba en C#~...con lo cerquita que estoy de estar muy contento
 
Cualquier ayuda sera una alabanza mia
 
Gracias de antemanooooooooooo
 
Aqui adjunto el screen de lo que tengo agregado el Animation y el Animator...esto corresponde al de despues de morir

Cita de: Jose134 date=1436207667Vale error mio no era PlayState() era simplemene Play();
 
http://docs.unity3d.com/ScriptReference/Animator.Play.html" rel="external nofollow">http://docs.unity3d.com/ScriptReference/Animator.Play.html
 
De error nada !! muchas gracias por la correccion, ahora no da fallo pero tampoco se anima asi, aver repregunto : cual de los dos componentes debo tener puesto: Animation o Animator? este ultimo solo deja cargar avatares y controles.
 
 
Creo que es el Animation no? donde tengo cargada la animación die...

Tienes que añadir animator y crear un AnimatorController y ahi ya pones la animaciones

Cita de: Jose134 date=1436216194Tienes que añadir animator y crear un AnimatorController y ahi ya pones la animaciones
 
Me perdido Jose, mas que una rana en la plaza cibeles, añado un Animator...hasta aqui ok....creo un AnimatorControler?....eso de donde lo saco tento un controler por ai echo de nose que...pero que meto en el primer Animator?, entindo que pide un controller...pero de eso a crear un controller a partir de la animación die...wops , soy lerdo total.
 
Voy a trastear aver si que lio esta vez..

Julio 07, 2015, 12:52:40 AM #35 Ultima modificación: Julio 07, 2015, 12:53:50 AM por ramunda
Cita de: ramunda date=1436222174Me perdido Jose, mas que una rana en la plaza cibeles, añado un Animator...hasta aqui ok....creo un AnimatorControler?....eso de donde lo saco tento un controler por ai echo de nose que...pero que meto en el primer Animator?, entindo que pide un controller...pero de eso a crear un controller a partir de la animación die...wops , soy lerdo total.
 
Voy a trastear aver si que lio esta vez..
 
Vale...ves la labor que estais haciendo no solo aprendo sino que me estrujo el cerebro de mosquito que tengo XD ,ok  encontre com crear un Animatorcontroller....lo edite le meti la animación die dentro...lo guarde...cree un Animator meti el controller con la animación dentro.....probe y no funciona....no da error no pero no arranca la animación...solo veo un detalle que en avatar de el animator...no hay nada....pero creo que no es muy relevante solo se crea el avatar cuando hacer el rigueo y todo eso...
 
 
Buenooo , necesito mas ideas
 
Adjunto los pasos en fotillo ...aver que he echo mal....

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

Bueno también hay otra forma de hacer funcionar las animaciones y en principio es la mejor, aunque nunca me puse a trastearlo.
 
Se trata de ajustar los condicionales en el propio animator, indicándole que si tal variable pasa a ser x que haga una transición a otra animación, con esta técnica consigues que no hayan cambios bruscos al cambiar de animación aun cuando la primera no se terminó.
 
Siento no poder darte datos más concretos de como hacerlo, ya que lei acerca de ello hace un tiempo pero no lo puse nunca en práctica. De todas formas te lo comentaba por si conseguía abrirte otra puerta de investigación.
 
Un saludo

Cita de: Howling Wolf date=1436263659Bueno también hay otra forma de hacer funcionar las animaciones y en principio es la mejor, aunque nunca me puse a trastearlo.
 
Se trata de ajustar los condicionales en el propio animator, indicándole que si tal variable pasa a ser x que haga una transición a otra animación, con esta técnica consigues que no hayan cambios bruscos al cambiar de animación aun cuando la primera no se terminó.
 
Siento no poder darte datos más concretos de como hacerlo, ya que lei acerca de ello hace un tiempo pero no lo puse nunca en práctica. De todas formas te lo comentaba por si conseguía abrirte otra puerta de investigación.
 
Un saludo
Y te lo agradezco deveras Wolf, por supuesto que indagare, pero me gustaría entender o comprender el porque no funciona el sistema anteriormente mencionado.
 
Teoricamente he seguido los pasos tal y como se comento, pero la animación no se da a lugar y no lo entiendo....aver si me podéis dar una explicacion del porque.
 
Mil gracias de antemano y un abrazo a todos!!!

Con mucho riesgo a estar equivocado creo que no lo estas llamando bien al tratarse de un componente Animator, para llamarlo de esta forma está el componente Animation que como verás es muy similar al AudioSource, por lo que para usarlo basta con asignar la animación (previamente incluida en el array de animaciones) y posteriormente ejecutándola.

Julio 07, 2015, 02:20:37 PM #39 Ultima modificación: Julio 07, 2015, 02:26:11 PM por ramunda
Cita de: Howling Wolf date=1436268110Con mucho riesgo a estar equivocado creo que no lo estas llamando bien al tratarse de un componente Animator, para llamarlo de esta forma está el componente Animation que como verás es muy similar al AudioSource, por lo que para usarlo basta con asignar la animación (previamente incluida en el array de animaciones) y posteriormente ejecutándola.
 
 
Estoy de acuerdo Wolf , como has visto en las imagenes ya meti la animación en el array como dices y esta creado el controler como dijo Jose, he puesto el animator y dentro el controller con la animación die.
 
Hasta aqui sin herrores pero sin funcionar....que idea podrias darme para llamarlo correctamente se te ocurre algo?, o mejor lo probamos con animator? funcionaria tambien? me refiero llamando a una animacíon o algo asi esque nose no paro de probar cosas y no funciona de nunguna manera es desesperante...aver si porfavor se te ocurre algo lo que sea que yo lo pruebo encantado
 
Espero noticias y gracias de nuevo.
 
P.d: he probado a crear un public Gameobject animame:
 
Asi me pide un gameobject que es un empty con la animación dentro....
 
Luego le he dicho:
 
animame.animation.Play("die"); pero me da error en el comando Play no le gusta....
 
 
(

No no, me refiero a usar el componente Animation en vez del Animator, son componentes totalmente distintos.
 
http://docs.unity3d.com/ScriptReference/Animation.html" rel="external nofollow">http://docs.unity3d.com/ScriptReference/Animation.html
 
Según recuerdo, cuando lo usé en unity 4 se usaba de forma muy similar al AudioSource, asignando primero la animación por defecto y después darle play al componente. Pero también puedo estar liandote y que ya no se haga así en unity 5 jaja.

Julio 07, 2015, 03:08:43 PM #41 Ultima modificación: Julio 07, 2015, 03:10:46 PM por ramunda
Cita de: Howling Wolf date=1436273396No no, me refiero a usar el componente Animation en vez del Animator, son componentes totalmente distintos.
 
http://docs.unity3d.com/ScriptReference/Animation.html" rel="external nofollow">http://docs.unity3d.com/ScriptReference/Animation.html
 
Según recuerdo, cuando lo usé en unity 4 se usaba de forma muy similar al AudioSource, asignando primero la animación por defecto y después darle play al componente. Pero también puedo estar liandote y que ya no se haga así en unity 5 jaja.
 
La madre del amor hermoso....esto es increible porque no funcionaaaaaaaaaa XDDD , aver repasemos juas.
 
 
Repongo el codigo.

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 Animation anim;
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;
         //anim = GetComponent<Animator>();
         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;
      }
   }
}
}

Linea 11, objeto publico Animation el cual me pide en un recuadrito una animación la cual tengo metida en un gameobject que es la de "die". y me deja agregarla.
 
linea 52: 
 
le digo que me anime la anim(previamente puesta en linea 11 y puesta en su casillita como animación...), no da errores pero para variar no funciona hahhahah
 
mmmm voy a provar a cambiar el nombre de la animación por el string1....aver que pasa....
 
Y...........no paso nada igual resultado hahhahah estoy desesperado, nadie a montado una animación en c# al morir su personaje? alguien tiene que haberlo echo antes!!! socorroooo

Para comenzar veo esto...

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

Intentas iniciar directamente la variable anim, pero no le has dicho con que componente.
 
Por otro lado si funciona como en unity 4 animation.Play ejecuta la animación que esté en ese momento por defecto, no una añadida a una variable Animation
 

Cita de: Howling Wolf date=1436275565Para comenzar veo esto...

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

Intentas iniciar directamente la variable anim, pero no le has dicho con que componente.
 
Por otro lado si funciona como en unity 4 animation.Play ejecuta la animación que esté en ese momento por defecto, no una añadida a una variable Animation
 

Bien siguiendo tus instrucciones:
 
tenemos esto:
 
como puedes ver en la foto esta solo el principal como me has comentado....y como puedes ver dice que n lo encuantra nose porque...
 
 
este es el codigo midificado llamando al componente:

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

No lo entiendo algo se nis escapa....

Ando 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.

Etiquetas: