muy buenas compa?eros...vereis estoy dandole vueltas a este codigo
[gml]instance_create(random(room_width),random(room_height),enemigo_01)[/gml]
esto est? puesto (ademas de mas cosas) en el momento en el que el enemigo muera....mi intencion es hacer que aparezca otra vez en cualquier lugar de la room aleatoriamente pero.....que deberia a?adirle para que aparezca en un lugar random de la room pero en un lugar que est? libre de colision en un circulo de 64px de radio?



mil gracias compa?eros  8)

#1 Abril 07, 2011, 02:19:05 PM Ultima modificación: Abril 07, 2011, 02:21:34 PM por Jucarave
creo que podr?as hacer un script "scr_Reaparicion", por ejemplo... luego cuando muera lo llamas y en el script puedes poner esto:

[gml]
var xx, yy;
xx = random(room_width); //Crea una coordenada aleatoria xx
yy = random(room_height); //Crea una coordenada aleatoria yy

if !(collision_circle(xx,yy,64,obj_muro,0,0)) //busca una colision en las coordendas xx, yy con un radio de 64 con los objetos muros.
{
   instance_create(xx,yy,enemigo_01); //Si no hay colision lo crea.
}
else
{
   scr_Reaparicion(); //Y si hay collision entonces vuelve a ejecutar el script.
}
[/gml]

No lo he probado, pero creo que deber?a funcionar.

Saludos. ;D

Checa mi canal de Youtube para tutoriales y charlas sobre desarrollo de videojuegos.


#2 Abril 07, 2011, 02:50:05 PM Ultima modificación: Abril 07, 2011, 03:00:32 PM por unbleached
te explico...en el step del enemigo hay esto
[gml]if vida_e1<1 ///abrimos lo que pasar? ssi est? muerto
{instance_destroy()  ///se destruir?
with cve01 {instance_destroy ()}  ///se destruir? su campo de vision
with cte01 {instance_destroy ()};   ///se destruir? su campo de tiro
script_execute(scr_Reaparicion)
}  ///cerramos lo que pasara si esta muerto[/gml]

y el script scr_Reaparicion es este
[gml]var xx, yy;
xx = random(room_width); //Crea una coordenada aleatoria xx
yy = random(room_height); //Crea una coordenada aleatoria yy

if !(collision_circle(xx,yy,64,escenario,0,0)) //busca una colision en las coordendas xx, yy con un radio de 64 con los objetos muros.
{
    instance_create(xx,yy,enemigo_01); //Si no hay colision lo crea.
}
else
{
    scr_Reaparicion(); //Y si hay collision entonces vuelve a ejecutar el script.
}[/gml]

pues cuando mato a un enemigo me tira el juego....vamos que no me sale ningun mensaje de error pero el juego desaparece y aparezco otra vez en game maker...como si se cerrase.Salud y gracias.


EDITO:me tira cuando mato a un segundo enemigo y juraria que no reaparece en otro sitio el primero que mato.

#3 Abril 07, 2011, 03:05:09 PM Ultima modificación: Abril 07, 2011, 03:23:07 PM por Jucarave
Dame un par de minutos y te hago un ejemplo... edito este mensaje.
;D

EDIT: Ya lo hice :D espero que te funcione

Por cierto con tu codigo...

[gml]if vida_e1<1 ///abrimos lo que pasar? ssi est? muerto
{instance_destroy()  ///se destruir?
with cve01 {instance_destroy ()}  ///se destruir? su campo de vision
with cte01 {instance_destroy ()};   ///se destruir? su campo de tiro
script_execute(scr_Reaparicion)
}  ///cerramos lo que pasara si esta muerto[/gml]

Es mejor que hagas todas las funciones antes de a?adir el instance_destroy()

osea asi:

[gml]if vida_e1<1 ///abrimos lo que pasar? ssi est? muerto
{with cve01 {instance_destroy ();}  ///se destruir? su campo de vision
with cte01 {instance_destroy ();}   ///se destruir? su campo de tiro
scr_Reaparicion();
instance_destroy();  ///se destruir?
}  ///cerramos lo que pasara si esta muerto[/gml]

Espero que te funcione, saludos.

Checa mi canal de Youtube para tutoriales y charlas sobre desarrollo de videojuegos.


Pues creo que es mucho mas f?cil hacerlo as?


[gml]with(instance_create(x,y,obj_enemigo)){
while (!collision_circle(a.x,a.y,64,obj_muro,0,0))
{x=random(room_width)
y=random(room_height)}}[/gml]