Desde que hice la parte de habilidades del Lufia de rpg maker no he contado cómo funciona internamente cada cosa, más de uno me ha preguntado como se hace, puede ser un poco lioso, pero con la teoría/lógica se aprende.
En mi caso me puse a hacer pruebas y a ver como lograba hacerlo, no es que leyera tutoriales.
En el título he puesto lo de otros porque puede valer para más cosas que no sean Rpg Maker, es lógica del funcionamiento de un videojuego.
Veamos.
Tal como funciona Rpg maker 2003 hay que tener eventos, que son los cuadrados que se ven,
pero las acciones dentro del mismo también se les llama eventos. al final hay que verlo como un contenedor.
Como yo hice el sistema, para tener flechas y poder usar toda las propiedades, la flecha con su gráfico es como un evento de esos cuadrado.
Rpg maker ya tiene un sistema para poner en un proceso que está todo el rato funcionando (proceso paralelo) que al pulsar un botón pase x cosa, en este caso al pulsar el botón lanza la flecha.
Como Rpg maker tiene una sección llamada Eventos comunes donde puedes llamar a una serie de procesos sin copiar y pegar en cada mapa, solo está una vez.
-Detalles generales-
Como se ve en la imagen de la derecha hay recuadros que representan coordenadas del mapa.
Rpg maker tiene 2 formas de usarlas,
Coordenadas X e Y, (el cuadro entero, lo que pasa desde que el primer píxel llega hasta él, se manejan sumando y restando 1 para pasasr de recuadro)
Posición X e Y (píxel a píxel, de un cuadro a otro hay una distancia de 16 píxeles)
Usando rangos de posición X y otros rangos de Y desde una posición a otra se puede hacer una caja de colisión, algo habitual en los juegos. Aunque Rpg maker ya integra formas propias sin llegar a decir la terminología tal como se conoce.
Uso de Variables, hay que saber que se pueden guardar valores y usando la función
de condiciones y efectos (Conditional branch) se pueden comprobar si
unas variables tienen el mismo valor, mayor, menor, etc
Como decía arriba usé una flecha que está como evento en el mapa, que es la que manejo.
-Cosas a definir-
En Variables
Coordenada del personaje X
Coordenada del personaje X+1 (Tomar valor de X y sumar 1)
Coordenada del personaje X-1 (Tomar valor de X y restar 1)
Coordenada del personaje Y
Coordenada del personaje Y+1 (Tomar valor de Yy sumar 1)
Coordenada del personaje Y-1 (Tomar valor de Yy restar 1)
A más variables guardemos de lo que rodea al personaje, luego podremos hacer más cosas.
Valor de Terreno, según el cuadro. (Terreno es algo de Rpg maker que se puede usar para colisiones)
Digamos que el valor 0 es no pasable y 1 pasable
Coordenada del X de Flecha
Coordenada del Y de Flecha
Coordenada del interruptor X
Coordenada del interruptor Y
(Esto último se puede ahorrar poniendo un proceso paralelo que guarde esa posición)
-Acciones-
Esta es la parte que hay que estrujarse un poco los sesos.
Al menos en Rpg maker 2003 todo se procesa a una velocidad rapidísima, así que hay que usar esperas continuas.
Si nuestro personaje está mirando a la izquierda,
Cambiar ubicación de Evento "Flecha"
Debe irse a la posición ID X-1
Algo así:
Condiciones y efectos: Dirección de Héroe "Izquierda"
-(Cambiar gráfico de personaje (haciendo gesto de lanzar si queremos)
--Movimiento de personaje: Flecha "Mirar a izquierda"
---Cambiar Posición de "Flecha" a Coordenada del personaje X-1 e Y (sin cambiar)
----Esperar 0.0s (las esperas así permiten que se procesen las cosas sin interrupciones)
Hasta ahora ya hemos conseguido que la flecha se mueva, pero solo si miramos a izquierda, ojo.
El movimiento, tal como se llaman las acciones en rpg maker:
Condiciones y efectos: Coordenada del evento flecha X / flecha Y
-Adquirir ID de terreno de "Flecha" (en realidad debe ser de X-1 para saber si pasa)
--Condiciones y efectos: Variable Valor = 0 (No se cumple)
---Ir a etiqueta 1
--Condiciones y efectos: Variable Valor = 1 (Si se cumple)
---Movimiento de personaje: Flecha / "Comenzar Ruta" (Así tradujeron la acción de atravesar todo) "Avanzar" (Avanza un cuadrado)
----Esperar 0.2s (generalmente el tiempo de espera de un movimiento de tile, según la velocidad)
(En este punto se repite la acción, si no hay nada contra lo que chocar la flecha seguirá avanzando)
-Etiqueta 1
-- (Animación de chocar, o de momento ponemos que desaparezca la flecha)
Ahora viene lo que afecta al interruptor que pulsamos:
Rpg maker 2003 puede tener eventos haciendo procesos en paralelo comprobando cosas sin apenas afectar al rendimiento, y es lo que se suele hacer.
En el interruptor ponemos un evento
Ya tenemos de antes guardadas,
Coordenada del interruptor X
Coordenada del interruptor Y
Pues:
-Condiciones y efectos:
--Coordenada del interruptor X = Coordenada de Flecha X?
---Coordenada del interruptor Y = Coordenada de Flecha Y? (Si ambas se cumplen)
----Efecto de sonido (el que queramos)
----Activar interruptor: Palanca pulsada (El que queramos)
----Esperar 0.2s
-Esperar 0.0s (para evitar posible lag al estar todo el rato comprobando las coordenadas)
En mi ejemplo el interruptor tiene otro nombre, la palanca está mirando a otro lado
(Como ya sabéis si habéis llegado aquí es solo un cambio de página, en la 2 no hay nada)
En el proyecto había algo más aparte el terreno, el ID de lo que hay en un recuadro,
así no podía atravesar ciertas cosas como pilares, cierto rango lo dejaba para colisiones.
Puede ser bastante lioso, voy a poner todo el evento común del Lufia aquí (es muy caótico por los pequeños ajustes que hacía sobre la marcha 😅),
igualmente está el juego en la seccion descargas,esto está en Evento común 0071-Flecha:
13 es el terreno de pared
-Evento original-