Como hacer un plataformas basado en la gravedad

1

Tagged

Contributors

Stats

4,944 visits, 5,435 views

Tools

License

This tutorial is licensed under CC BY 4.0. Please refer to the license text if you wish to reuse, share or remix the content contained within this tutorial.

Published on 13 Dec, 2015. Last updated 25 Feb, 2019

Ha habido un montón de interés en como hacer un juego con las mecánicas de gravedad así que he decidido escribir este tutorial, mi primero, para enseñarte lo fácil que es.

Lo primero que debes saber es que este metido fue concebido por Yann Granjon. No fui idea mía, yo simplemente lo implemente. Eso si, me ayudo mucho durante el proceso y no hubiese sido lo mismo sin el.

Lo básico

##

La cosa mas importante para este proyecto es la habilidad de las plataformas de cambiar el angulo de gravedad. Una vez esto funciona, lo siguiente que nos debe importar es... como sabrá el juego que gravedad aplicar a cada angulo?

Asi que Yann sugirio y yo implemente: Zonas de Gravedad.

(perdonad por las imágenes borrosas)

Aqui podemos ver un nivel como ejemplo. Lo que nos interesa es las zonas coloreadas que rodean las plataforma.

Estas zonas coloreadas son en realidad instancias del mismo objecto "GravZone (Area de Gravedad)". Hay 5 formas diferentes para usarlas según el tipo de terreno.

Pero principalmente, hay dos atributos que tienes que incluir. "Relativo" y "NoRelativo" que son del tipo "Boolean".

El código

El código es muy simple:

Básicamente, hay un angulo para cada "GravZone". Este angulo esta determinado si la variable "GravZone" es "Relativa".

Generalmente, las "GravZones" que son "Relativas" son las redondeadas y las que son planas son las "NoRelativas". La diferencia es que las "GravZones" relativas atraen a un único punto, mejores para las superficies redondas, mientas que las que no son relativas sirven mejor para las rectas.

Bueno, volvamos al código. Todo lo que hace, es, por cada "GravZone" con el que el jugador choca, el juego determina el angulo correcto (gravzone.a para las "NoRelativas" y angle(player.x,player.y,gravzone.x,gravzone.y) para las "Relativas". y cambia los ángulos en vectores, añadiendo vectores nuevos sobre los viejos señalando la dirección que apuntan las "GravZones" con las que choca nuestro personaje.

Así puedes chocar con dos o mas "GravZones" e ir al angulo correcto al que apuntas.

Cambiando 180º

Si quisiéramos cambiar de mecánica e implementar un cambio de gravedad dentro de la otra "GravZone" nos encontraríamos con un pequeño problema, que la media de los ángulos se cancelan a si mismo y es personaje avanza hacia una posición extraña. Así que he creado un objeto invisible, llamado flip_assist (asistente de giro).

Esto cancela el método de gravedad de las "GravZones" cuando el jugar choca con el flip_assist.

Este código lo que hace es cambiar los ángulos de gravedad por unos determinados por lo que introducimos en el código del Flip-Assist. Y cuando sales el, nuestro jugador vuelve a su gravedad normal.

También tienes que saber que hay dos flip_assists por cada barra amarilla. Uno para ir al siguiente "planeta" y otro para volver al anterior. Esto necesita un "Boolean" llamado "cannot_reset_flip (no puedo cambiar el asistente)" para que funcione.

Y eso es básicamente todo lo que necesitas saber.

Ahora tenemos la mecánica básica. Mira otros ejemplos para entenderlo mejor.

Espero que lo hayas entendido y suerte con tu juego.

  • 0 Comments

Want to leave a comment? Login or Register an account!