Jump to content
Sign in to follow this  
croviman

AYUDA! Muerte al caer de un lugar muy alto.

Recommended Posts

5 hours ago, stztek said:

Super facil el error jajaja

 

fijate que 

tiene que estar dentro de public class cae : MonoBehaivor

Bien!  Logramos hacer que el script no de error! Como te das cuenta mis errores son tontos porque de veras... no comprendo ni como funciona bien la sintaxis de los scripts... Usando el codigo así: 

using UnityEngine;
using System.Collections;

public class cae  : MonoBehaviour {

  public float TiempoEnElAire;
  public int ValorCaida; //Valor tope.
  public bool EstaEnElAire;
  public void Update ()
  {
   if (EstaEnElAire == true)
   {
    TiempoEnElAire = 2 * Time.deltaTime; // Va haciendo un conteo multiplicado x2. Podes cambiar el numero para que vaya mas rapido.
   } else 
   {
      TiempoEnElAire = 0; // El valor vuelve a 0 sin deltaTime. ya que EstaEnElAire es FALSE.
   }
  }

  public void OnCollisionEnter2D(Collision2D collision)
  {
    if (collision.gameObject.tag == "concreto") //Agregar tag al Suelo.
    {
     if (EstaEnElAire == true)
     {
      if (TiempoEnElAire >= ValorCaida) //Si TiempoEnElAire es mayor o igual a ValorCaida. se ejecuta la acción.
      {
        Destroy(gameObject);
        //Aca dentro rellenas lo que queres.
      }
       EstaEnElAire = false;
     } else if (collision.gameObject.tag != "concreto")
     {
         EstaEnElAire = true;
     }
    }
  } 
}

 Agregándolo al FPS controller pasan cosas extrañas...  Aparece una casilla seleccionable para poner si está en el aire o no... Si no la activo, nada sucede... Si la activo el valor Tiempo en el aire fluctua con números inferiores a cero que van ascendiendo o descendiendo sin lógica independientemente de si estoy en el aire o sobre el piso con el TAG correspondiente. Que estaré haciendo mal?

Edited by croviman

Share this post


Link to post
Share on other sites
1 hour ago, croviman said:

Bien!  Logramos hacer que el script no de error! Como te das cuenta mis errores son tontos porque de veras... no comprendo ni como funciona bien la sintaxis de los scripts... Usando el codigo así: 


using UnityEngine;
using System.Collections;

public class cae  : MonoBehaviour {

  public float TiempoEnElAire;
  public int ValorCaida; //Valor tope.
  public bool EstaEnElAire;
  public void Update ()
  {
   if (EstaEnElAire == true)
   {
    TiempoEnElAire = 2 * Time.deltaTime; // Va haciendo un conteo multiplicado x2. Podes cambiar el numero para que vaya mas rapido.
   } else 
   {
      TiempoEnElAire = 0; // El valor vuelve a 0 sin deltaTime. ya que EstaEnElAire es FALSE.
   }
  }

  public void OnCollisionEnter2D(Collision2D collision)
  {
    if (collision.gameObject.tag == "concreto") //Agregar tag al Suelo.
    {
     if (EstaEnElAire == true)
     {
      if (TiempoEnElAire >= ValorCaida) //Si TiempoEnElAire es mayor o igual a ValorCaida. se ejecuta la acción.
      {
        Destroy(gameObject);
        //Aca dentro rellenas lo que queres.
      }
       EstaEnElAire = false;
     } else if (collision.gameObject.tag != "concreto")
     {
         EstaEnElAire = true;
     }
    }
  } 
}

 Agregándolo al FPS controller pasan cosas extrañas...  Aparece una casilla seleccionable para poner si está en el aire o no... Si no la activo, nada sucede... Si la activo el valor Tiempo en el aire fluctua con números inferiores a cero que van ascendiendo o descendiendo sin lógica independientemente de si estoy en el aire o sobre el piso con el TAG correspondiente. Que estaré haciendo mal?

prueba y error hermano n.n yo tambien empece sabiendo poco y nada. fui aprendiendo mientras me equivocaba jajaja despues se te hace mas facil. Hoy estaras "sufriendo" por este codigo y mañana en futuros proyectos vas a implementar tecnicas similares para ciertas acciones que quieras llevar a cabo 🙂

 

en cuanto al codigo, agrega la siguiente linea:

 

Quote

public FPSController fcontroller;

despues cambia el bool "EstaEnElAire" por "fcontroller.isGrounded".

Resumiendo, llamando la variable haces que el script tenga acceso a FPSController.. asi que cambias "EstaEnElAire" por el bool que maneja CUANDO el jugador esta en el aire.

 

Share this post


Link to post
Share on other sites
On 7/26/2021 at 4:46 PM, stztek said:

prueba y error hermano n.n yo tambien empece sabiendo poco y nada. fui aprendiendo mientras me equivocaba jajaja despues se te hace mas facil. Hoy estaras "sufriendo" por este codigo y mañana en futuros proyectos vas a implementar tecnicas similares para ciertas acciones que quieras llevar a cabo 🙂

 

en cuanto al codigo, agrega la siguiente linea:

 

despues cambia el bool "EstaEnElAire" por "fcontroller.isGrounded".

Resumiendo, llamando la variable haces que el script tenga acceso a FPSController.. asi que cambias "EstaEnElAire" por el bool que maneja CUANDO el jugador esta en el aire.

 

Hola! Comprendo lo que me dices... vengo de Entidad 3D y cuando arranqué no sabía hacer nada, mucho menos comprendía los "comandos" (scripts) de aquel engine. Poco a poco a base de ensayo, error (como tu dices) y ayuda de la comunidad terminé haciendo cosas muy interesantes, incluso algún que otro sistema de comandos complejo que compartí en aquella comunidad. La diferencia es que contaba con mucho tiempo libre y ahora no... A parte de que comprender el sistema de scrips de Unity a todas luces es mucho mas complejo que el de E3D. No me cierro en absoluto a ir aprendiendo de a poco, pero honestamente cuando me planteé solicitar ayuda para lograr que el player muera al caer de una altura determinada pensé que sería algo re básico y sin complicaciones. Pensé que tal vez para ustedes sería una pavada que ya hicieron mil veces y quizás podrían compartir algún script sencillo para mi juego... Pero se complicó jaja! No era tan fácil y ahora no dejo de molestar con mi rollo y me siento mal por joder tanto y tan seguido. Mil disculpas... 

Ahora vengo con este problema (imagen) al agregar la línea de código que me dijiste, pues pasa eso.... La línea que queda debajo de la que agrego siempre se pone toda de color negro (ya no mas azul y celeste) y el script deja de funcionar dando los siguientes errores en rojo:

Assets\Scripts\cae.cs(8,35): error CS1002: ; expected

Assets\Scripts\cae.cs(9,37): error CS1003: Syntax error, '(' expected

Assets\Scripts\cae.cs(9,37): error CS1026: ) expected

Quiero que sepas que valoro mucho tu tiempo y dedicación.... comprendo perfectamente si ya te he cansado con mis dudas de novato. Saludo!

 

c-2.jpg

Share this post


Link to post
Share on other sites
12 hours ago, croviman said:

Hola! Comprendo lo que me dices... vengo de Entidad 3D y cuando arranqué no sabía hacer nada, mucho menos comprendía los "comandos" (scripts) de aquel engine. Poco a poco a base de ensayo, error (como tu dices) y ayuda de la comunidad terminé haciendo cosas muy interesantes, incluso algún que otro sistema de comandos complejo que compartí en aquella comunidad. La diferencia es que contaba con mucho tiempo libre y ahora no... A parte de que comprender el sistema de scrips de Unity a todas luces es mucho mas complejo que el de E3D. No me cierro en absoluto a ir aprendiendo de a poco, pero honestamente cuando me planteé solicitar ayuda para lograr que el player muera al caer de una altura determinada pensé que sería algo re básico y sin complicaciones. Pensé que tal vez para ustedes sería una pavada que ya hicieron mil veces y quizás podrían compartir algún script sencillo para mi juego... Pero se complicó jaja! No era tan fácil y ahora no dejo de molestar con mi rollo y me siento mal por joder tanto y tan seguido. Mil disculpas... 

Ahora vengo con este problema (imagen) al agregar la línea de código que me dijiste, pues pasa eso.... La línea que queda debajo de la que agrego siempre se pone toda de color negro (ya no mas azul y celeste) y el script deja de funcionar dando los siguientes errores en rojo:

Assets\Scripts\cae.cs(8,35): error CS1002: ; expected

Assets\Scripts\cae.cs(9,37): error CS1003: Syntax error, '(' expected

Assets\Scripts\cae.cs(9,37): error CS1026: ) expected

Quiero que sepas que valoro mucho tu tiempo y dedicación.... comprendo perfectamente si ya te he cansado con mis dudas de novato. Saludo!

 

c-2.jpg

borra el que dice public bool fcontroller.isgrounded.

ya que no es necesario declararla porque estas llamando al bool "isGrounded" de FpsController 🙂

 

y a public FPSController fcontroller le falta un ; al final 😛

Share this post


Link to post
Share on other sites
Sign in to follow this  

×
×
  • Create New...