Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: Elpacoviejo en Marzo 22, 2015, 09:23:10 AM

Título: Aparición de enemigos aleatorios.
Publicado por: Elpacoviejo en Marzo 22, 2015, 09:23:10 AM
Hola, estoy haciendo otro proyecto con game maker pero esto me lleva un poco más de complejidad.

Tengo un enemigo que aparece siempre en el mismo lugar y viene directo a atacarme.

Hay alguna chance de que el enemigo pueda aparecer aleatoriamente fuera de mi screen y no venga directo hacia a mi? Si no que me ataque cuando yo esté a cierta distancia de el.

Espero haberme explicado, muchas gracias de antemano. :GMS:
Título: Re:Aparición de enemigos aleatorios.
Publicado por: Iros en Marzo 22, 2015, 05:25:04 PM
Para crear un enemigo al azar en un objeto control poné esto:

Create:
[gml]
randomize(); //Con esto hacemos que realmente sea al azar.
instance_create(irandom_range(0,room_width),irandom_range(0,room_height),obj_enemy); //Con irandom_range obtenemos un valor entero de 0 al ancho de la room y de 0 al alto de la room.
[/gml]

Si queres crear más de un enemigo tendría que quedarte algo así:

Create:
[gml]
randomize();
alarm[0] = 15;
[/gml]

Alarm 0:
[gml]
var xx,yy; //Creamos variables locales
xx = irandom_range(0,room_width); //Asignamos un valor random para XX.
yy = irandom_range(0,room_height); //Asignamos un valor random para YY,

if (position_empty(xx,yy)) { //Si la posición en XX e YY está libre...
    instance_create(xx,yy,obj_enemy);
}
alarm[0] = room_speed; //El código se va a repetir cada un segundo.
[/gml]

En cuanto a que el enemigo se acerque únicamente si estás cerca tendrías que poner algo así:

Evento STEP del enemigo:
[gml]
if (distance_to_object(obj_player) < 50) {
   //Acá poné el código que tenías para que se acerque.
}
[/gml]

El 50 lo podes cambiar por la distancia que vos quieras, recordá que son 50 pixeles. También reemplazá los nombres "obj_enemy"  y "obj_player" por el nombre de tu enemigo y de tu personaje.
Título: Re:Aparición de enemigos aleatorios.
Publicado por: Elpacoviejo en Marzo 25, 2015, 02:10:37 PM
Funcionó de 10, un lujo.