Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Kenjiro44 en Julio 03, 2015, 05:45:20 AM

Título: Ayuda con seguir objetos aleatorios
Publicado por: Kenjiro44 en Julio 03, 2015, 05:45:20 AM
Hola, mi problematica es la siguiente:

Estoy creando un pequeño juego de entretenimiento  XD sobre combate de naves espaciales, el asunto es que puede haber 100 naves de un lado y 100 del otro pero todas estas son el mismo objeto, quiero que cada uno decida de forma aleatoria a cual objeto enemigo seguir, entiendo que cada objeto tiene que seleccionar una id del objeto enemigo la cual debe ser diferente de todas las demas ya que si solo lo hago seguir el objeto seguira el mas cercano o el mas lejano si asi lo declaro o bien el primero que se cree en la room, pero como hago para que cada objeto pueda definir aleatoriamente un objeto enemigo? Gracias.
Título: Re:Ayuda con seguir objetos aleatorios
Publicado por: Clamud en Julio 07, 2015, 02:16:29 AM
Si las naves son creadas con un objeto controlador, se pueden guardar los ids en dos arreglos (uno para cada bando):
[gml]
//Guardar ids
for( i=0; i<100; i+=1 )
{
    ids_bando1 = instance_create( x,y, obj_nave );
    ids_bando2 = instance_create( x,y, obj_nave );
    //x,y pueden ser aleatorias
}
//Asignar id del enemigo
for( i=0; i<100; i+=1 )
{
    ids_bando1.enemigo = ids_bando2[irandom(99)];
    ids_bando2.enemigo = ids_bando1[irandom(99)];
}
[/gml]
Con el código anterior varias instancias pueden tener el mismo enemigo y no corresponderse entre sí, formando cadenas de enemigos.

Dime si te agrada el método. Luego muestro otros métodos.
Título: Re:Ayuda con seguir objetos aleatorios
Publicado por: Kenjiro44 en Julio 09, 2015, 12:07:23 AM
Muy bien entiendo, pero la cuestion es ahora que ya tenemos identificado a cada objeto por separado, como hago para que una nave enemiga persiga a una aliada y viceversa elijiendo cualquiera de los objetos enemigos y no al que este mas cerca o mas lejos?
Título: Re:Ayuda con seguir objetos aleatorios
Publicado por: Clamud en Julio 10, 2015, 12:31:20 AM
¿En verdad usas GM5?, eso es algo fuera de lo común. Yo nunca he usado esa versión, espero que los códigos sean compatibles.

Bien, al ejecutar el código anterior cada instancia tiene una variable enemigo que contiene el id de la nave a la que debe seguir. El método para seguir puede ser de diferentes formas dependiendo del movimiento de la nave, por ejemplo, la nave podría girar rápidamente y tener una aceleración instantánea (éste es el método más fácil de programar) o podría acelerar lentamente hasta alcanzar su rapidez máxima y tardar un tiempo en dar una vuelta completa, también podría tener algún tipo de planificación de movimiento y evitar obstáculos, ¿cómo es el comportamiento de tus naves?
Título: Re:Ayuda con seguir objetos aleatorios
Publicado por: Kenjiro44 en Julio 14, 2015, 12:46:59 AM
si uso gm5 porque es con el que mas comodo me siento, ya probe una vez el 8 y para empezar no me corrio XD no se porque y use el 6 y no me gusto para nada XD bueno en fin, mis naves unicamente dan vuelta a su izquiera o a la derecha es decir se mueven aleatoriamente en cualquier direccion en 360 grados y quiero que cada una de las naves las cuales pueden ser 10, 20 o 50 a la vez recordando que sera una batalla espacial, debe seleccionar su objetivo, ya sea una nave enemiga, una torreta de un crucero enemigo, el punto debil del crucero, etc, pero sabiendo como seleccionar una nave de tantas que son el mismo objeto pues de ahi partiria para poder seleccionar las demas que menciono, lo que se es como hacer que las naves seleccionen al objeto que este mas cerca, mas lejos o al primero que se creo en el room, pero entre el mas lejos y el mas cerca habran muchos mas y quiero que sean seleccionables de forma aleatoria por los enemigos, entonces con ese codigo cualquier nave puede seleccionar y seguir y atacar a cualquier otra?
Título: Re:Ayuda con seguir objetos aleatorios
Publicado por: Clamud en Julio 14, 2015, 01:09:47 AM
Bueno, por ahora sólo elige una nave al azar, falta programar el seguimiento y el ataque. En tu juego ¿los niveles son armados con el editor de rooms? en ese caso la forma de elegir una nave al azar debe ser ligeramente diferente, pues se deben tomar en cuenta las naves que ya están creadas.
Título: Re:Ayuda con seguir objetos aleatorios
Publicado por: fasst007 en Julio 17, 2015, 07:53:02 AM
Supongamos que haya un solo objeto llamado: "nave" el cual es el mismo para las instancias de los dos bandos. Entonces cada instancia de nave debería tener una variable interna que especifique a que bando pertenece, por ejemplo: "bando". Esto quedaría asi:

cant_naves_enem = 0;

with (nave)
{
      if (bando != other.bando)
      {
           other.naves_enemigas[other.cant_naves_enem] = id;
           other.cant_naves_enem = other.cant_naves_enem + 1;
      }
}

nave_a_atacar = irandom(cant_naves_enem);
id_enemigo = naves_enemigas[nave_a_atacar]

//en la variable id_enemigo estaría almacenada el id de la nave a atacar.

pudiendo luego acceder a sus propiedades como:
(id_enemigo).x;
(id_enemigo).y;


///////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////////



NOTA FINAL: No se si en Game Maker 5 hay que definir las variables antes de usarlas
si ese fuera el caso hay que hacerlo. Saludos

Título: Re:Ayuda con seguir objetos aleatorios
Publicado por: Kenjiro44 en Julio 22, 2015, 04:53:33 AM
Muchas gracias por la ayuda, voy a ver como funcionan los ejemplos que me dieron  :D
Título: Re:Ayuda con seguir objetos aleatorios
Publicado por: Kenjiro44 en Julio 22, 2015, 05:19:59 AM
Bueno me manda un error que no se reconoce la variable "bando" lo cual es extraño porque ya esta definida antes de llegar a esa parte, y el error me lo manda en el if (bando != other.bando).
Título: Re:Ayuda con seguir objetos aleatorios
Publicado por: fasst007 en Julio 24, 2015, 05:01:34 AM
Si no tenés problema en adjuntar el archivo fuente, pasalo así te lo podemos solucionar mejor porque hay muchos detalles del juego que desconozco. Y me gustaría ayudarte, si querés podés cambiar los sprites por cuadrados o lo que sea para que te quedes tranquilo que nadie copiará tu trabajo.

Para adjuntar haz clic en "opciones adicionales..." y te aparecerá la opción.

Saludos.