Animación y movimiento de ascenso en la repisa (plataformas en 2D)

11

Luchando para tomar una decisión sobre la implementación de una mecánica de ascenso de repisa para un juego de plataformas 2D impulsado por la física. ¿Cuál es la mejor manera de hacerlo sin que se vuelva demasiado complejo?

Hasta ahora entiendo (aficionado aquí no un profesional) hay algunas opciones que incluyen:

  1. Aplique fuerza controlada al cuerpo rígido en el eje y hasta que la posición de la raíz esté justo por encima de la posición de la mano, luego aplique suficiente fuerza en el eje x para que el personaje se pare en la plataforma. Al mismo tiempo, sincronice esto de alguna manera con las animaciones de ascenso.

    Observaciones : el movimiento es fácil aquí e incluso puede controlarse mediante una junta deslizante prismática, pero no estoy seguro de cómo mantendría las animaciones (columna vertebral) sincronizadas con el movimiento.

  2. Animación de movimiento de raíz que impulsa la posición raíz del personaje. Teletransporta el cuerpo rígido cuando esté completo y espero que box2d aún pueda responder adecuadamente a tiempo a cualquier colisión si algún objeto cae del cielo.

    Observaciones : suena más fácil de animar, pero no estoy seguro de si tendré algún problema con el tiempo de ejecución de la columna vertebral, box2d o más adelante en las plataformas móviles y plataformas de altura variada.

  3. Aplique la restricción IK mediante programación en las manos para bloquearlas en su lugar y proceda a rotar los huesos manualmente o aplique pequeñas animaciones preestablecidas (pocas teclas / cuadros) mientras aplica la fuerza necesaria al cuerpo rígido al mismo tiempo.

    Observaciones : parece que esto le daría el máximo control al jugador, pero me parece complicado implementarlo a mi nivel, no estoy seguro de dónde comenzaría.

¡Gracias por adelantado por cualquier contribución!

FYI: Este es un motor basado en ECS (libgdx + ashley) con box2d. El agarre de repisa ya está implementado como un sistema separado, por lo que podemos suponer aquí que el personaje ya es capaz de colgarse de una repisa de cualquier altura.

Adrian
fuente

Respuestas:

1

Creo que necesita más opciones de diseño aquí antes de poder tomar una decisión adecuada, específicamente, ¿qué puede pasarle al personaje mientras está colgado / trepando?

Como dijiste que el juego está basado en la física, supongo que podrías tener una roca cayendo sobre tu cabeza mientras estás colgando o trepando, así que si este es el caso, creo que ir por rootmotion podría ser la solución más simple, solo necesitas animar la escalada , mientras sube está en un estado de suspensión ligeramente diferente, la única diferencia es que no puede iniciar la acción de subir.

Ahora, esto supone que tienes toda la situación de suspensión bajo control, lo que significa que si estás colgando y ocurre alguna interacción, el personaje reacciona correctamente.

Entonces, todo lo que necesita hacer es volver a poner el estado de su personaje en inactivo una vez que se complete la animación de escalada.

Brian H.
fuente
0

simplemente puede mover la transformación. varias veces hasta que los pies estén en la repisa y olvide la física temporalmente, creo que funcionará bien, siempre puede medir la distancia entre los objetos que caen y el jugador en caso de que la colisión falle durante Una traducción transformada. para asegurarse de que ocurra una colisión.

joe shmoe
fuente
0

Si el jugador es presionado contra un objeto escalable, entonces permita que suba / baje para moverlo en el eje Y. Durante este estado, asegúrese de que no pueda moverse en el eje X. A medida que te mueves, puedes llamar a Animación. Muestra en tu animación de ascenso para asegurarte de que el punto en la animación coincida con la distancia escalada en lugar de intentar cronometrar todo.

Peter Morris
fuente
0

En mi opinión, la "mejor" forma sería: Cuando detecte que es posible escalar, bloquee temporalmente la posición del jugador. Use la animación con movimiento de raíz y bloquee los controles. Cuando termine la animación, desbloquee la posición y los controles de los jugadores.

Por supuesto, si lo hace imprudentemente, se verá extraño O requerirá una precisión perfecta de píxeles. Pero puedes evitarlo: dale al jugador un rango donde pueda escalar, y con un salto ajusta rápidamente la posición al lugar perfecto.

lilKriT
fuente
0

¿Puede el jugador moverse libremente horizontalmente mientras está en el aire (control aéreo)? Si es así, simplemente aplicaría una cantidad adecuada de fuerza vertical para colocar los pies del jugador sobre la plataforma y dejar que el jugador se mueva horizontalmente sobre ella.

Esto le daría al jugador más control sobre el personaje y abriría más opciones de movimiento. Por ejemplo, si el jugador (mientras está colgado de una repisa) quería saltar, disparar a algo en la plataforma, luego caer de nuevo y volver a agarrar el repisa mientras el proyectil viajaba a su objetivo para esquivar cualquier proyectil que el objetivo disparó al jugador. Tal táctica podría ser una estrategia interesante de lucha contra jefes.

Agente Tatsu
fuente