Isshokuta; 20160520

Ya tengo idle, walking, crouching, punching, kicking y jumping hechos, y ahora me queda el chuck norris: la patada voladora. La cosa es que no sé demasiado bien como montármelo, porque igualmente tiene que seguir saltando.

Estoy viendo que hay mucho código repetido entre diferentes estados. Cuando termine la máquina de estados completamente y la tenga funcionando al 100%, creo que le daré una vuelta para “compactarla”… y hacerla ilegible e ininteligible en el proceso 😛 Conservaré el original, aunque sea, comentado. Por si luego hay que hacer algo parecido partir de la versión “humana”.

Así que voy a hacer el estado chuck norris aparte, y luego ya veré como compacto.

La cosa es que esto ocurre “mientras se salta”. Por un lado tengo el subestado, que será subiendo o bajando… Pero por otro lado tengo la patada voladora.

Espera, creo que lo tengo: en la patada voladora sigo incrementando según la tabla de incrementos precalculados tranquilamente, y dejo lo otro para la animación. Cuando detecte que se llega al suelo, o que nos acercamos, cambiaré de estado.

Vamos a darle fran.

~~

Bueno, ya lo tengo medio cuate. Ahora tengo que meter lo siguiente, que es el cambio de nivel. Para esto voy a necesitar empezar a hacer comprobaciones de colisión: Si pulsamos Arriba + A, debe hacerse un cambio de nivel si hay un nivel superior y si estamos en el nivel inferior. Si no, debe actuar como “A” simplemente y saltar.

Había pensado en meter la información de colisión en una tira más del mapa, pero a lo mejor tanto precálculo es demasiado para el ahorro en velocidad cuando se pierde tanto espacio (1 byte más por chunk). No sé qué hacer.

Voy a darle vueltas. Por ejemplo, necesito encontrar la forma menos costosa de saber en qué columna del mapa estoy: px >> 5 me valdría, ya que px está en el centro del sprite. Ahí vamos bien…

Siguiendo eso, tenemos que la dirección de la columna actual sería:

rda = (px >> 5);
gp_gen = c_map + (rda << 2) + (rda << 1); if (*(gp_gen + 3) == PLATFORM) -> entonces sí.

Voy a empezar así. Voy a hacer un define, por el momento, y luego si eso podré cambiarlo si necesito hacerlo.

#define BEH(x) behs [*(gp_gen + x)]

~~

Con algún que otro glitch (cosas menores que atajaré) ya tengo “going up” y “going down” hechos. Ahora tengo que hacer algunas cosas más:

  • Decidir si hago “pseudoalturas” – va a ser que no. Ese bloque de madera que he pintado parece bonito pero mejor no lo hago interactuable o, si lo hago interactuable, que sea como barrera impasable en la parte de arriba (hay que poner dos, uno encima del otro). Dejo esto para el final.
  • Detectar al final del salto si debo seguir cayendo al nivel inferior (la comprobación es la misma de can_go_up – o muy parecida, revisar).
  • Detectar si caemos en algún endless pit.

Y poco más. Ya es tarde, estoy cansado. Hasta mañana!

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s