Hacer que un personaje se mueva a lo largo de una pendiente curva en un mundo con gravedad

10

He visto este juego

Pantalones elegantes 2 . Y lo que noté aparte de la física y las hermosas animaciones es que el personaje se mueve a lo largo de las pendientes, incluso en pendientes curvas. Tengo poca experiencia en Box2d, pero este concepto de pendientes curvas es nuevo para mí. Sería de gran ayuda para mí si alguien me iluminara sobre este concepto y su implementación. Incluso si la implementación no está en box2d, es bienvenida.

Vishnu
fuente
2
Metanet, los chicos que hicieron N (que está en Flash) tienen un tutorial sobre cómo hicieron colisiones que cubre cómo calculan las curvas: metanetsoftware.com/technique/tutorialA.html
CodexArcanum

Respuestas:

5

¿Cómo se obtienen curvas en Box2D?

En la versión inédita de Box2D , hay dos nuevos tipos de formas, b2LoopShape y b2EdgeShape , que le permiten crear curvas a partir de una secuencia de segmentos de línea.

En la versión lanzada, puede usar varias cajas pequeñas establecidas en ángulos para obtener un efecto similar, pero los cuerpos tienden a hacer cosas inestables e inesperadas cerca de los puntos de conexión. Por lo tanto, recomendaría usar la versión inédita.

¿Cómo puede un personaje caer por la curva?

¡Haz del personaje una rueda! Mi pregunta sobre la física de plataformas tiene cierta discusión sobre esto , pero la idea básica es montar el cuerpo de tu personaje en una rueda giratoria y moverse aplicando fuerza de rotación a la rueda. Aunque (en realidad, porque) la rueda tiene fricción, la fuerza descendente de la gravedad hará que gire en pendientes, como una rueda real. Al cambiar los parámetros del motor de la junta giratoria, puede hacer que resista la rotación tanto como sea necesario para evitar que ruede por pequeñas pendientes.

Comunidad
fuente
Estoy de acuerdo con usted, al usar b2LoopShape podría crear una pendiente como mi deseo. Pero, al seguir el enlace que publicaste; El problema es que no conduce a un puerto flash de box2d, solo una versión c ++. 1.) ¿Tienes alguna sugerencia para eso? o 2.) ¿Conoce algún otro motor de física para flash que permita la creación de pendientes curvas?
Vishnu
No creo que el puerto Flash de Box2D esté actualizado con los nuevos tipos de juntas / formas. No tengo idea de qué motores de física están disponibles para Flash que no sean Box2D.
@ Joe: Si te pregunto, ¿sería factible si intentara escribir una clase AS para b2LoopShape? Para poder incorporarlo a la API de Box2d Flash. ¿Dónde tendría que empezar a dirigirme? ¿Cualquier pista?
Vishnu
1

Fancy Pants se hizo en Flash, y Flash tiene un método específico llamado 'hitTest' que le permite probar un píxel (en este caso, probablemente realiza 2-3 Test de hit en la parte inferior del personaje de Fancy Pants) contra lo que se dibuja dentro de un objeto de clip de película designado. Puede ser un poco complicado hacerlo sentir bien, pero esta función incorporada es la razón por la cual tantos juegos Flash tienen colisiones con pendientes curvas. El proceso es mucho más complicado para la mayoría de los otros motores, y generalmente debe hacerse manualmente, pero hay algunos métodos diferentes.

El método con el que estoy más familiarizado es si su motor está basado en mosaicos (piense en Sonic the Hedgehog), los mosaicos designados como curvos podrían tener una fórmula que determine la posición de colisión 'Y' en función de la posición 'X' actual del personaje en ese azulejo Tendría que determinar la fórmula en función de la inclinación de una pendiente y la curva que esté buscando. Podría usar una calculadora gráfica o un programa de gráficos para experimentar con las fórmulas. Puede tener múltiples mosaicos con diferentes curvas y fórmulas asociadas con ellos de esta manera.

Brian Cable
fuente
Sonic no tiene una fórmula curva para los mosaicos. Utiliza un mapa de altura 2D para cada píxel.
AttackingHobo
@AttackingHobo: ¿Puedes decirme qué es el mapa de 2 alturas para cada píxel o puedes señalarme un lugar donde pueda usar eso en mis juegos flash?
Vishnu
2
info.sonicretro.org/Sonic_Physics_Guide Eche un vistazo a esto. No sé si esto te ayudará si usas el cuadro 2d. Es posible que tengas que rodar tu propio motor de física.
AttackingHobo
@Attacking Hobo: ¿Hay alguna ventaja o posibilidad de "hacer" pendientes curvas si trato de hacer una clase AS 3.0 que permita bucles en la API de box2d?
Vishnu