Noticias

Importante: ¡Si quieres publicar tu juego no olvides leer este tema!

* Sponsor

Comunidad Game Maker

Bienvenid@ a la comunidad hispana de Game Maker. Nuestro objetivo es crear videojuegos y dar soporte en castellano de GM. Para mejorar nuestro servicio hemos implantado, como adicion al reglamento general, algunas normas especificas en los subforos más comunes. ¡No olvides informarte antes de participar!.

Autor Tema: option_konami(obj)  (Leído 107 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado dixon

en: Mayo 21, 2022, 02:16:09 pm
Autor del script: Reyes Dávila
Nombre del script: option_konami(obj);
Breve descripción de su función: mueve uno o X objetos como se mueven los option del video juego “Gradius/ Life force/salamander”.
Versiones usadas: Game maker 4 y game maker html5; teóricamente funciona en casi todas las versiones.
Versión del script: 3 ,  (24-05-2022).

Html5: Aquí podrán ver la versión 3 en funcionamiento, Click en la imagen:


Código: [Seleccionar]




///option_konami(obj);

//Estableciendo distancia de separación
distancia_asd=argument0.sprite_height/2;
for(i=0;i<=instance_number(object_index);i+=1)
{
   id_asd=instance_find(object_index,i);
   if(id_asd=id){distancia_asd=distancia_asd*(i+1)}
}

//Siguiendo a la nave
c1_asd=(point_distance(x,y,argument0.x,argument0.y)>distancia_asd);
while(c1_asd)
{
   direction=point_direction(x,y,argument0.x,argument0.y);
   x+=0.5*cos(direction*pi/180);
   y-=0.5*sin(direction*pi/180);
   c1_asd=(point_distance(x,y,argument0.x,argument0.y)>distancia_asd);
}

//Contrayendo al llegar a los bordes de la pantalla.
if((argument0.y=argument0.yprevious) and (argument0.x=argument0.xprevious))
{
   c1_asd=0;
   c2_asd=0;
   c3_asd=0;
   c4_asd=0;
   if(argument0.y<argument0.sprite_height){c1_asd=keyboard_check(vk_up)}
   if(argument0.y>room_height-argument0.sprite_height){c2_asd=keyboard_check(vk_down)}
   if(argument0.x<argument0.sprite_width){c3_asd=keyboard_check(vk_left)}
   if(argument0.x>room_width-argument0.sprite_width){c4_asd=keyboard_check(vk_right)}
   if(c1_asd or c2_asd or c3_asd or c4_asd)
   {
      if(x>argument0.x+5){x-=5}
      if(y>argument0.y+5){y-=5}
      if(x<argument0.x-5){x+=5}
      if(y<argument0.y-5){y+=5}
   }
}

//Invirtiendo movimiento.
if(argument0.y<argument0.yprevious){y+=abs(argument0.y-argument0.yprevious)}
if(argument0.y>argument0.yprevious){y-=abs(argument0.y-argument0.yprevious)}
if(argument0.x<argument0.xprevious){x+=abs(argument0.x-argument0.xprevious)}
if(argument0.x>argument0.xprevious){x-=abs(argument0.x-argument0.xprevious)}
































Modo de uso
1. Crea un script el cual deberás llamar opcition_konami(obj).
2. Copia el código que te estoy ofreciendo y pégalo en el script.
3. Crea tu objeto option y en su evento step coloca:
Código: [Seleccionar]
option_konami(obj);
4. Deberás reemplazar obj por el objeto que va a seguir el option, es decir en obj se debe colocar el objeto de la nave.

Ejemplo:
Supongamos que mi objeto nave se llama object_gradius y mi objeto opción se llama object_option, entonces en mi object_option debo colocar:
Código: [Seleccionar]
option_konami(object_gradius);

 
Más información
1. El movimiento resultante es bastante genial, pero si lo observamos con detalle notaremos que no es exacto. Se puede alcanzar la exactitud de movimiento más adelante en otra versión.
2. Si la nave se mueve a la velocidad de la luz, los OPTION tambien.
3. Las variables del código no van a chocar con las variables del juego.
4. Para crear más options solo hay que crear más instancias y cada una tomará su posición.
5. Los nombres propuestos para el script son:
option_gradius_movement(obj);
follow_gradius(obj);
move_to_salamander(obj);
option_lifeForce(obj);

Pero como todos son de konami le coloqué: option_konami(obj).


Mejoras realizadas:
1. Distancia de separación: La separación entre la nave y las option es más parecida a las de gradius.
2. Contracción de options: Cuando la nave llega al borde de la pantalla las options se contraen cono en el juego original, pero obliga al programador a usar las teclas direccionales del teclado.
3. Inversión de movimiento: Originalmente en el juego las options siguen el movimiento de la nave, para lograr esto se puede recurrir al sistema de arrays recomendado por Jeffrey Faper, pero como quiero crea un único script fácil de implementar tuve que imitar ese movimiento invirtiendo la dirección de movimiento de las options con respecto a la dirección de la nave y el resultado quedó bueno.


Anécdota
El código lo he creado para mi amigo somnus al cual conozco desde hace años cuando la CGM estaba comenzando. Mi saludos siempre y mi estima para todos.

En mi infancia me dediqué a jugar un juego llamado LifeForce para la nes y lo pasé hasta el final varias veces (es increíble pero algo difícil, bueno, muy difícil):





Quizás me motive a jugar salamander 2 para la playstation el cual nunca he jugado:



Gradius no me simpatizaba mucho porque era más difícil y menos colorido. Claro ahora Gradius en sus nuevas versiones tiene gráficos increíbles.




Bueno, eso es todo por ahora, nos vemos en otro post, saludos a mi amigo somnus, quizás me motive a programar alguna nave para luchar junto a él contra alienígenas malignos robóticos en el espacio sideral, él representaría a gradius y yo a lifeForce.




Edito:


Creo que los principios de este script pueden ser usados para lograr:

La cuerda floja de new mario.



Los huevos de Yoshi



Aquí podrán jugar life force:
https://oldgameshelf.com/life-force-580.html?lang=es


« Última modificación: Mayo 25, 2022, 03:16:58 am por dixon »

Si Dios quiere; Limpiaré la oficina, puliré el piso y les serviré café a todos, luego, me enseñarán a programar e iré a comprarles más café.
 


No Tienes Permisos Para Dar Puntos
point 0 Puntos

Este tema no recibió puntos.