Jump to content
Sign in to follow this  
Mike Ackerman

Movimiento de un personaje 2d

Recommended Posts

Hola soy super nuevo en esto y básicamente no se nada de programación, así que comenze a crear mi propio script de movimiento para n personaje en 2d  en base a tutoriales de internet y me he atorado al configurar el salto. Entonces el player salta al iniciar y no lo hace cuando presiono el boton de saltar. Agradecería mucho  que alguien me pudiera ayudar ya llevo mucho atorado con esto y no se como continuar.

Aquí dejo el codigo

 private bool jump;

    // Start is called before the first frame update
    void Start()
    {

    }

    // Update is called once per frame
    void Update()
    {
        //sides movement (left and right)
        if (Input.GetKey("left"))
            gameObject.transform.Translate(-50f * Time.deltaTime, 0, 0);
        if (Input.GetKey("right"))
            gameObject.transform.Translate(50f * Time.deltaTime, 0, 0);
    
      //Jump movment and fall after it 
   
        if (gameObject.transform.position.y <= 0)

            jump = true;

        if (Input.GetKey("up") && jump && gameObject.transform.position.y < 10)

            gameObject.transform.Translate(0, 100f * Time.deltaTime, 0 );
        else
            jump = false;

        if (gameObject.transform.position.y > 0)

            gameObject.transform.Translate(0, -100f * Time.deltaTime, 0);
    }

}

Share this post


Link to post
Share on other sites

1 - No puedes compara flotantes de forma estricta, esto quiere decir

float mi_variable = 0;
mi_variable=0;

Esto se debe a que los números de tipo float tienen una precisión baja, aunque lo asignes como cero al valor inicial el valor siempre intentará estar lo más apropiado a ese valor, esto quiere decir que nunca sera cero.

2 - Ese booleano utilizado como "flag", la variable llamada jump no tiene ninguna utilidad, el problema esta es que la estás asignando como falso cuando el usuario no cumple el bloque If dónde evalúas si el usuario está presionando la tecla de salto.

 

Por otro lado el código tiene un planteamiento lógico erróneo, borra todo, y empieza de nuevo, pensando previamente que condiciones se deberían cumplir para que x accion suceda. 

Share this post


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

×
×
  • Create New...