Octubre 08, 2015, 07:08:48 AM Ultima modificación: Enero 12, 2016, 01:21:11 AM por NiuWeb
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
alaberga regué el café.

BA:STFW&RTFM

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?

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
alaberga regué el café.

BA:STFW&RTFM

estaría bien, que la torreta detectase si hay una colisión entre el enemigo y ella misma.. pues no dispare :P
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

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/. 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.

osssti, lo de la rotación requerida si sería buenísimo!! :O
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

Me agradan las ideas que Clamud y Kostra dieron, me pondré a intentar mejorar este sistema, y aceptaría cualquier apoyo....xD

Gracias...
alaberga regué el café.

BA:STFW&RTFM

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.

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
alaberga regué el café.

BA:STFW&RTFM

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 ?

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

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
[spoiler="ola k ase clickarme o k ase"]la imagen no se quita xD
[/spoiler]

Desarrollo de scripts: qué es y cómo 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.

Cita de: Fenris78Si un tema os resulta de interes y veis que hay poca información, la mejor solucion no es quejarse o pedir sin pensar, sino sugerir algo bien planteado o aportarlo vosotros mismos.
Cita de: CalioSomos desarrolladores independientes y, por lo tanto, no tenemos por qué guiarnos por las tendencias del mercado.