Comunidad Game Maker

Ayuda => Desarrollo de Scripts => Mensaje iniciado por: bygdle en Octubre 08, 2015, 07:08:48 AM

Título: Torreta que escoge, apunta y dispara
Publicado por: bygdle en Octubre 08, 2015, 07:08:48 AM
Autor: NiuWeb
Script creado en:  :GMS: 1.4


Hola, en esta ocación traigo un sistema que perimite crear una torreta que apunte y dispare a los enemigos más fáciles de eliminar... Una pequeña descripción de lo que hace el script:
[spoiler]
Elige al enemigo más cercano, y hasta que no lo destruya o encuentre un enemigo que esté más cerca, no deja de atacarlo.[/spoiler]

ahora con el código:

1) creamos un oEnemigo, un oTorreta y un oBala

2)- en oTorreta escribimos:

CREATE EVENT:

objetivo = noone; //no ha escogido ningún objetivo
alarm[0] = room_speed/2  //Ejecutar la alarma en medio segundo

ALARM 0 EVENT:

if !instance_exists(objetivo)
{
  objetivo = instance_nearest(x,y,oEnemigo); //Sí no ha seleccionado un objetivo o ya lo ha destruído, seleccionar otro objetivo
}
if instance_nearest(x,y,oEnemigo) != objetivo
{
  objetivo = instance_nearest(x,y,oEnemigo); //Si hay un enemigo más cerca que el objetivo, cambiar el objetivo al más cercano
}

if distance_to_object(objetivo) < 200
{
  with instance_create(x,y,oBala)
   {
    speed = 16;
    direction = point_direction(other.x,other.y,other.objetivo.x,other.objetivo.y);  //Sí el objetivo está cerca, disparar la bala
   }
}
alarm[0] = room_speed/2; //repetir la alarma

step event:

if instance_exists(objetivo)
{
  image_angle = point_direction(x,y,objetivo.x,objetivo.y); //Si hay un objetivo, rotar la torreta hacia él
}



Y listo, podrás  ver que la torreta es medianamente inteligente...xD

Adjunto el editable para que puedan apreciarlo mejor
Título: Re:Torreta que escoge, apunta y dispara
Publicado por: Azul G en Octubre 08, 2015, 12:10:27 PM
Guau, buen código, creo que lo usare en mi juego :D

Me das permiso para usarlo?

Saludos.

PD: Se puede usar en un juego de plataformas?
Título: Re:Torreta que escoge, apunta y dispara
Publicado por: bygdle en Octubre 08, 2015, 05:09:52 PM
Cita de: Azul G en Octubre 08, 2015, 12:10:27 PM
Guau, buen código, creo que lo usare en mi juego :D

Me das permiso para usarlo?

Saludos.

PD: Se puede usar en un juego de plataformas?

Por supusesto, si ponemos scripts en esta comunidad, es para todos ¿no?.
Y sí, se puede usar en cualquier tipo de juegos (obviamente no en 3D...xD)..saludos
Título: Re:Torreta que escoge, apunta y dispara
Publicado por: kostra en Octubre 08, 2015, 06:07:46 PM
estaría bien, que la torreta detectase si hay una colisión entre el enemigo y ella misma.. pues no dispare :P
Título: Re:Torreta que escoge, apunta y dispara
Publicado por: Clamud en Octubre 08, 2015, 11:53:52 PM
Funciona bien, pero me gustaría un cambio de ángulo más suave. Se podría combinar con el código que escribí hace poco: http://www.comunidadgm.org/preguntas-y-respuestas/(ayuda)-torreta-que-apunta-y-dispara-a-diversos-enemigos/ (http://www.comunidadgm.org/preguntas-y-respuestas/(ayuda)-torreta-que-apunta-y-dispara-a-diversos-enemigos/). Y para darle mejor utilidad como script, se podrían cambiar los nombres de los objetos por agumentos del script, así sería más flexible.

También estuve pensando en hacer una torreta más inteligente que pudiera decidir a qué enemigo disparar tomando en cuenta 3 condiciones: la salud del enemigo, la distancia y la rotación requerida para apuntar al enemigo; estaría bien agregar la condición que propone kostra. Las condiciones podrían tener diferente peso, para programar torretas con diferentes prioridades. Podemos trabajar juntos para desarrollar ese script.
Título: Re:Torreta que escoge, apunta y dispara
Publicado por: kostra en Octubre 09, 2015, 12:26:55 AM
osssti, lo de la rotación requerida si sería buenísimo!! :O
Título: Re:Torreta que escoge, apunta y dispara
Publicado por: bygdle en Octubre 09, 2015, 10:03:49 PM
Me agradan las ideas que Clamud y Kostra dieron, me pondré a intentar mejorar este sistema, y aceptaría cualquier apoyo....xD

Gracias...
Título: Re:Torreta que escoge, apunta y dispara
Publicado por: GM.CO en Enero 08, 2016, 12:34:15 AM
Wow, esto es justo lo que yo necesito, ya que mi equipo y yo estamos desarrollado un videojuego ?  M.O.B.A sorpresa, este código nos servirá bastante aunque claro cambiáremos un poco el código. Todos estamos aportando y estamos haciendo un buen trabajó en :GMS:.   :D :) 8)
Gracias por ese aporte.
Título: Re:Torreta que escoge, apunta y dispara
Publicado por: bygdle en Enero 08, 2016, 12:39:44 AM
Oh, este script aún existe! xD
Recuerdo que eones atrás dije que lo mejoraría y lo olvidé xD
Cuando esté tan aburrido y desocupado como para abrir GMS de nuevo, le daré unos retoques. XD
Título: Re:Torreta que escoge, apunta y dispara
Publicado por: GM.CO en Enero 08, 2016, 01:11:37 AM
Cita de: NiuWeb en Enero 08, 2016, 12:39:44 AM
Oh, este script aún existe! xD
Recuerdo que eones atrás dije que lo mejoraría y lo olvidé xD
Cuando esté tan aburrido y desocupado como para abrir GMS de nuevo, le daré unos retoques. XD
Ha, pos q bien ?
Título: Re:Torreta que escoge, apunta y dispara
Publicado por: josesito1432 en Enero 10, 2016, 09:43:42 PM
hermoso aporte che, muy groso lo oy a probar is puedo ayudar en algo o corregir algo, les informo, con mi intelecto no que poder hacer mucho ajjaja soy medio noob todavia pero bueno de ultiam si tengo alguna idea solo la comento y vemos como ahcerlos saludos  :D
Título: Re:Torreta que escoge, apunta y dispara
Publicado por: kostra en Enero 11, 2016, 10:37:24 AM
joselito, ya sé que generalmente, las normas de ortografía en los foros no se aplica tan estrictamente... pero en serio, me cuesta mucho entender lo que dices a veces... no escribas tan rápido y échale una ojeada antes de postear, porfavor :S
Título: Re:Torreta que escoge, apunta y dispara
Publicado por: Johann en Enero 12, 2016, 01:43:02 AM
Desarrollo de scripts: qué es y cómo funciona - Leer antes de postear (http://www.comunidadgm.org/desarrollo-de-scripts/desarrollo-de-scripts-qu233-es-y-c243mo-funciona-leer-antes-de-postear/)

Cita de: Fenris78 en Octubre 16, 2007, 03:58:40 AM¿Qué es un Script?
En GML, podemos definir Script como una función o algoritmo portable, interpretado por GM, cuyo comportamiento puede ser modificado a través de argumentos para que se adecue a nuestras necesidades.

He visto que tanto en este como en otros post se presenta lo que sería un ejemplo de aplicación y no un script como tal, por lo que me veo en la obligación de actuar.