para arreglarlo agrega el && enSuelo de esta manera solo se va a agachar si esta tocando el suelo if (input.y < 0 && enSuelo) { agachar = true; } else { agachar = false; }
Hola, tengo un problema para hacer una animación hacia delante mientras esta agachado, aun cuando le pongo dos parámetros, como float horizontal y bool agacharse, desde any state, me presenta el problema que se inician las dos animaciones de agacharse y gatear
Hola, puedes revisar en el animator cuáles son los estados y como cambian entre ellos, en caso de que se activen al mismo tiempo y cambien rápidamente es porque ambas condiciones se cumplen al mismo tiempo y no sabe cuál tomar, para solucionarlo puedes revisar cuáles son las condiciones de ambas animaciones y asegurarte que no se cumplan, puedes también usar un Blend Tree, este te puede ayudar para saber que animacion se debe ejecutar tomando un parámetro, el de entrada puede ser el booleano para que sepas si se está agachando o no, el otro parámetro es el interno, sería la velocidad, si es 0 o menor a un número muy bajo puedes ejecutar la de movimiento, de otra manera ejecutará la que debe ser cuando está quieto, tenemos un video en el canal donde vimos las bases de este elemento, te lo dejo aquí abajo: ua-cam.com/video/fm61Y-gJWss/v-deo.html
Ahora como le hago con el error que me acaba de aparecer 'Vector2' does not contain a definition for 'GetAxisRaw' and no accessible extension method 'GetAxisRaw' accepting a first argument of type 'Vector2' could be found (are you missing a using directive or an assembly reference?) *Traduccion* Assets\Scripts2D\MovimientoDelJugador.cs(50,38): error CS1061: 'Vector2' no contiene una definición para 'GetAxisRaw' y no se pudo encontrar el método de extensión accesible 'GetAxisRaw' que acepta un primer argumento de tipo 'Vector2' (son ¿Te falta una directiva de uso o una referencia de ensamblaje?)
Hola, es posible que tengas mal escrito el Input que va antes del método GetAxisRaw, este debe ser con mayúscula porque parece que está tomando el otro input, el que es un Vector2 en la declaración de las variables
Una manera rápida de hacerlo podría ser con un booleano, que te diga si tiene la capacidad de agacharse, entonces esta la colocas como la condición inicial antes de cualquier elemento que componga la acción de agacharse, en el momento en el que tocas el objeto puedes cambiar este booleano y permitir al jugador realizar esta acción
hola tengo un boxcollider para las colisiones como hago para que si se agacha no le llegue un disparo porque el boxcollider esta en trigger. lo tendre que desactivar para que no le haga daño el disparo.
mover *= multiplicadorVelocidadAgachado; colisionadorAgachado.enabled = false; colisionadorDaño.enabled = false; como puedo hacer para que el cicle y el box collider no se desactive o tiene que ser por separado.
@@cristiancarrazana3131 Debes verificar cuáles son los segmentos que necesitas para que no se genere la colisión, si lo que tienes es un colisionador en la parte superior de tu personaje y quieres que no reciba el daño cuando se agache puedes desactivar este colisionador, si no es con un colisionador como tal, puedes usar las variables que controlan el estado del jugador, en este caso que esté agachado para que el daño no se genere, depende de lo que necesites, además recuerda colocar en el código la figura de tu colisionador para la referencia.
Hola espero que veas este comentario: Tengo un problema he escrito todo el código igual, bueno aunque la variable collisionadoragachado, lo cambie a colA. Pero me sale un error que dice lo siguiente: Assets\Scripts\PlayerControl.cs(106,13): error CS0103: The name 'colA' does not exist in the current context Espero tu respuesta gracias.
Hola, según lo que dice el error, es posible que tengas un problema en el nombre de la variable y en la manera en la que la llamas a la hora de emplearla, puede ser que esté escrito de una manera diferente en la declaración y en el uso.
Disculpa, que debo hacer para evitar la doble colisión?? El agachado ha quedado pero ahora noto que cuando colisiono con un enemigo me baja el doble de vida
Hola, puedes solucionarlo de varias maneras, si es por un golpe generado por un Overlap o un Cast puedes tomar en la lista de objetos con el que colisionó una variable para que no tenga en cuenta la segunda vez que hace el daño, esto puede funcionar para elementos con muchos más colisionadores, puedes también dar un tiempo entre toma de daño, si es muy pequeño puede funcionar, también puedes jugar un poco con las formas de los colisionadores, muchas veces ocurre si es en el mismo frame lo cual es complejo de tratar porque no logra hacer el llamado antes de evitar el daño, entonces puedes solucionarlo también con un solo colisionador, pero cambiarle la forma, por ejemplo, una cápsula o una caja en la cual le reduzcas su tamaño a la hora de agacharte, todo depende mucho de que quieres lograr, pero si es algo que puede afectar en casos muy particulares, la idea es que este caso llegue al mínimo de apariciones.
Puedes hacer algo similar a lo que se tiene con la animación de idle y correr, si está agachado que tenga una animación base y si se está moviendo y al mismo tiempo está agachado que haga otra
@@BravePixelG YA entiendo pero como seria hago una animacion ejemplo idleagacharse a agacharse seria agacharse true pero en el script para que se active agacharse como lo hago.
@@cristiancarrazana3131 Debes colocar en las transiciones de las animaciones que ocurra bajo dos parámetros, uno es el estado de agacharse que tenemos en el código donde sabemos con el booleano si el personaje está o no en esta posición, el otro parámetro es el de la velocidad, depende mucho de como lo tienes, pero básicamente es si el personaje se está moviendo y está agachado hace una animación, si está agachado, pero no se está moviendo hace la otra
Hola, es lo mismo, crear la animacion mientras se mueve y conectas el AnyState a la nueva animacion con la misma condicion del booleano y le agregas la condicion de movimiento
Por fin, gracias 👍
Solo faltaría el video de subir escaleras 👉👈
Muy buen trabajo, gracias.
hola es normal que cuando salto y presiono agachar salgan las 2 animaciones muy rapido se ve feo
para arreglarlo agrega el && enSuelo de esta manera solo se va a agachar si esta tocando el suelo
if (input.y < 0 && enSuelo)
{
agachar = true;
}
else
{
agachar = false;
}
hola cuando salta y va bajando hace la animación de agachar
Hola, tengo un problema para hacer una animación hacia delante mientras esta agachado, aun cuando le pongo dos parámetros, como float horizontal y bool agacharse, desde any state, me presenta el problema que se inician las dos animaciones de agacharse y gatear
Hola, puedes revisar en el animator cuáles son los estados y como cambian entre ellos, en caso de que se activen al mismo tiempo y cambien rápidamente es porque ambas condiciones se cumplen al mismo tiempo y no sabe cuál tomar, para solucionarlo puedes revisar cuáles son las condiciones de ambas animaciones y asegurarte que no se cumplan, puedes también usar un Blend Tree, este te puede ayudar para saber que animacion se debe ejecutar tomando un parámetro, el de entrada puede ser el booleano para que sepas si se está agachando o no, el otro parámetro es el interno, sería la velocidad, si es 0 o menor a un número muy bajo puedes ejecutar la de movimiento, de otra manera ejecutará la que debe ser cuando está quieto, tenemos un video en el canal donde vimos las bases de este elemento, te lo dejo aquí abajo:
ua-cam.com/video/fm61Y-gJWss/v-deo.html
@@BravePixelG gracias, spy fan de tus videos, me han ayudado mucho para sentar mis bases
Ahora como le hago con el error que me acaba de aparecer
'Vector2' does not contain a definition for 'GetAxisRaw' and no accessible extension method 'GetAxisRaw' accepting a first argument of type 'Vector2' could be found (are you missing a using directive or an assembly reference?)
*Traduccion*
Assets\Scripts2D\MovimientoDelJugador.cs(50,38): error CS1061: 'Vector2' no contiene una definición para 'GetAxisRaw' y no se pudo encontrar el método de extensión accesible 'GetAxisRaw' que acepta un primer argumento de tipo 'Vector2' (son ¿Te falta una directiva de uso o una referencia de ensamblaje?)
Hola, es posible que tengas mal escrito el Input que va antes del método GetAxisRaw, este debe ser con mayúscula porque parece que está tomando el otro input, el que es un Vector2 en la declaración de las variables
@@BravePixelG Agradecido y ya logre solucionar, muchas gracias y saludos cordiales
quiero activar agachado cuando encuentre un item como que fuera una habilidad para Avanzar en el juego.gracias.
Una manera rápida de hacerlo podría ser con un booleano, que te diga si tiene la capacidad de agacharse, entonces esta la colocas como la condición inicial antes de cualquier elemento que componga la acción de agacharse, en el momento en el que tocas el objeto puedes cambiar este booleano y permitir al jugador realizar esta acción
y otro quiero activar agachado cuando encuentre un item como que fuera una habilidad para Avanzar en el juego.gracias.
puedes hacer un video sobre sonas con agua y como nadar en 2D
hola tengo un boxcollider para las colisiones como hago para que si se agacha no le llegue un disparo porque el boxcollider esta en trigger. lo tendre que desactivar para que no le haga daño el disparo.
con el mismo script se puede
cambie el colisionador por el box y no me detecta el disparo
mover *= multiplicadorVelocidadAgachado;
colisionadorAgachado.enabled = false;
colisionadorDaño.enabled = false;
como puedo hacer para que el cicle y el box collider no se desactive o tiene que ser por separado.
@@cristiancarrazana3131 Debes verificar cuáles son los segmentos que necesitas para que no se genere la colisión, si lo que tienes es un colisionador en la parte superior de tu personaje y quieres que no reciba el daño cuando se agache puedes desactivar este colisionador, si no es con un colisionador como tal, puedes usar las variables que controlan el estado del jugador, en este caso que esté agachado para que el daño no se genere, depende de lo que necesites, además recuerda colocar en el código la figura de tu colisionador para la referencia.
Hola espero que veas este comentario:
Tengo un problema he escrito todo el código igual, bueno aunque la variable collisionadoragachado, lo cambie a colA.
Pero me sale un error que dice lo siguiente:
Assets\Scripts\PlayerControl.cs(106,13): error CS0103: The name 'colA' does not exist in the current context
Espero tu respuesta gracias.
Hola, según lo que dice el error, es posible que tengas un problema en el nombre de la variable y en la manera en la que la llamas a la hora de emplearla, puede ser que esté escrito de una manera diferente en la declaración y en el uso.
Muchas gracias 🦁👍🏻
Disculpa, que debo hacer para evitar la doble colisión?? El agachado ha quedado pero ahora noto que cuando colisiono con un enemigo me baja el doble de vida
Hola, puedes solucionarlo de varias maneras, si es por un golpe generado por un Overlap o un Cast puedes tomar en la lista de objetos con el que colisionó una variable para que no tenga en cuenta la segunda vez que hace el daño, esto puede funcionar para elementos con muchos más colisionadores, puedes también dar un tiempo entre toma de daño, si es muy pequeño puede funcionar, también puedes jugar un poco con las formas de los colisionadores, muchas veces ocurre si es en el mismo frame lo cual es complejo de tratar porque no logra hacer el llamado antes de evitar el daño, entonces puedes solucionarlo también con un solo colisionador, pero cambiarle la forma, por ejemplo, una cápsula o una caja en la cual le reduzcas su tamaño a la hora de agacharte, todo depende mucho de que quieres lograr, pero si es algo que puede afectar en casos muy particulares, la idea es que este caso llegue al mínimo de apariciones.
Hola como puedo hacerlo para quecuando se agache solo Haga la animacion Cuando se mueva hacia adelante
Puedes hacer algo similar a lo que se tiene con la animación de idle y correr, si está agachado que tenga una animación base y si se está moviendo y al mismo tiempo está agachado que haga otra
@@BravePixelG YA entiendo pero como seria hago una animacion ejemplo idleagacharse a agacharse seria agacharse true
pero en el script para que se active agacharse como lo hago.
@@BravePixelG ya funcion idleAgacharse pero al avanzar no hace la animacion.
cuando me agacho me hace la animacion idleagacharse pero si avanzo agachado no me hace la de avanzar agachado
@@cristiancarrazana3131 Debes colocar en las transiciones de las animaciones que ocurra bajo dos parámetros, uno es el estado de agacharse que tenemos en el código donde sabemos con el booleano si el personaje está o no en esta posición, el otro parámetro es el de la velocidad, depende mucho de como lo tienes, pero básicamente es si el personaje se está moviendo y está agachado hace una animación, si está agachado, pero no se está moviendo hace la otra
falto agregar una animacion de movimiento mientras estas agachado y la velocidad del personaje es distinta de 0
Hola, es lo mismo, crear la animacion mientras se mueve y conectas el AnyState a la nueva animacion con la misma condicion del booleano y le agregas la condicion de movimiento
@@MegaJHONDY disculpa pero no entendí
También ando igual
alguien sabe que esta mal en mi codigo?