Consejo: Para que funcione la animación de salto mientras estás caminando, agregar una transición desde el nodo PlayerWalk al nodo PlayerJump configurado de la misma manera como está en la transición desde PlayerIdle a PlayerJump.
Jajaja yo había tratado de hacerlo con código y no funcionó. Buen aporte.
Gracias por el aporte. Lo hice y funcionó. Tengo una duda, cuando salto el player salta y ejecuta la animación de saltar pero, antes de caer a la plataforma (o sea, en el aire) cambia a la animación de Idle, ¿Hay alguna forma para resolver ese problema? ¿quizás alargando la animación de salto o ajustando la fuerza del salto a lo que dura la animación del salto? Saludos.
creo que transcribí el mismo código de la clase, pero la animación del salto me quedaba pegada, me acusaba que no había condición para salir de esa transición, así que cree otra condición que se vuelva verdadera al tocar el piso, y que se haga falsa al apretar el salto. y la agregue a la transición de retorno Idle, con eso me funciono completamente los efectos. espero que sirva de ayuda si a alguien le ocurre lo mismo.
Si una transición no tiene Condición (de salida) debe tener activada la casilla de “Has Exit Time” para que no te dé ese error (de no tener condición de salida)
saludos!
Hola, si quieren que el movimiento sea aún más instantáneo, pueden usar Input.GetAxisRaw("Horizontal"), la diferencia entre Input.GetAxis("Horizontal") es que no existen valores intermedios entre 0 y 1 o -1. Se puede decir que el Raw hace que los valores sean discretos y el normal que sean continuos.
Gracias, me resolviste la duda.
Hola amigos una preguntota, no por que mi jugador no se mueve, hace las animaciones y todo, ya cheque que las transiciones estuvieran tal cual como dice y sigue sin funcionarme, agradecería mucho la ayuda.
Dejo ss de mi código:
me pasa lo mismo el salto funciona perfecto pero a la hora de caminar queda pegado al piso
como lo sulucionaste?
pudieron solucionar eso? me esta pasando lo mismo
Otra manera en la que puedan saltar mientras se camina o mientras se este en idle es usando el cuadro de "Any State"
Adicional le cambie el salto de trigger a bool para que mientras se este en el aire la animacion de salto se quede quieta y que apenas toque el piso el player pase de jump a idle.
No les ha pasado que no se desplaza el jugador se ejecutan todas las animaciones al tocar las teclas pero no se mueve del mismo lugar ?
Holaaaa, sí estás multiplicando el vector 3 por la variable de velocidad?
lo tengo en Vector 2 ?
Tip: Si creas una variable isGrounded para detectar si estas en el suelo y haces que sea true cuando colisiona con algo, vas a poder saltar si tu personaje se estampa contra una pared de frente, para solucionar esto, asigna el terreno que quieres que se comporte como suelo a una capa a la que llames Ground y luego detectala con un raycast desde el personaje asi:
voidUpdate(){if(Input.GetAxis("Vertical")!=0){if(animator.GetBool("isOnTheGround")==true){Jump();}}}//Nos dice si el personaje esta tocando el suelo bool IsTouchingTheGround(){if(Physics2D.Raycast(this.transform.position,Vector2.down,0.10f, ground)){returntrue;}else{returnfalse;}}
Para los valores de cada parámetro de las animaciones yo usé algo como esto para simplificar
Tengo un problema cuando estoy caminando y luego salto
Hice una transición de caminar a saltar pero siempre se queda en saltar.
¿Cómo podría solucionar eso?
En este caso, lo que deberías tener hecho es una sola transición que sale desde PlayerWalk hacia PlayerJump, que tiene destildada la casilla de Has Exit Time y cuya condición es el trigger Jump. De PlayerJump a PlayerWalk no deberías tener ninguna transición
no me deja acceder al componente "Animator", ¿que podría estar pasando?
¿Te refieres a que no puedes acceder a ella en el editor de Unity o en el código?
¿Podrias mostrarnos una imagen de que error te da?
es en el código.
No me reconoce ni "Animator" ni "SpriteRenderer"
Por lo que no me sale la animación al presionar al mover
este error me sale muy de seguido, que es?
Aquí dan una serie de pasos para solucionarlo en el comentario de Borellun, prueba y nos cuentas.
muchas gracias por tu ayuda
¿Existe alguna forma de en lugar de pasar los strings asi tal cual para GetAxis y SetBool usar un Enum o algo así? Para evitar errores ortograficos o poner una opcion que no existe o algo asi
cuando le doy play me se me queda pegado en player walking i no hace ninguna animacion.
Bro es por tú que estás haciendo el efecto de respirar en la animación, eso modifica tu transform, y hacer que al calcular el movimiento no lo realice. Lo que me funciono, eliminar los efectos de respiración.
Genial
el player no se mueve después de poner el animator en el script, he seguido los mismos pasos, saben como solucionar eso?
Probablemente estés usando el componente transform en tus animaciones.
Yo maneje el isWalking de esta manera, asi cuando el jugador sea un singleton otros scripts van a poder acceder a la funcion.
Mi solución para que en el OnCollisionEnter2D solo salte si choco por abajo
voidOnCollisionEnter2D(Collision2D collision){if(collision.gameObject.CompareTag("Ground")){// Detectando la dirreción de la colisionVector2 player =newVector2(this.gameObject.transform.position.x,this.gameObject.transform.position.y);Vector2 dir = collision.contacts[0].point- player; float dirY = dir.normalized.y;if(dirY <-0.7f)//Si la colision fue desde la parte inferior del jugador aka suelo {// Debug.Log(dirY); isGrounded =true; stopJump =false;}}}
no me deja usar el SetBool me aparece con error, alguien sabe porque?
si saltas pulsando la tecla movimiento, se ejecuta corriendo la accion de caminar y no completa el salto, a mitad del salto se muestra caminado como puedo poner que cuando llegue al piso entonces se ejecute la animacion de correr y esta pulsado la tecla?
Hola Daniel, en tu pregunta realmente tienes el camino hecho te falta implementar la idea. Mi solución: Cuando no está en el suelo desactiva la animación, la única forma que no esté en el suelo es cuando salta (supongamos que cuando cae sin saltar da igual que siga la animación) ahí puedes implementar contadores o booleanos para tomar estas decisiones. Un abrazo crack vas bien!
aprovecha que ya se a creado un método que verifica la colisión con el suelo.
Algo complejo pero gratificante cuando lo entiendes