Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: DarkFenix en Abril 18, 2011, 04:04:30 PM

Título: ?Segundo asalto!
Publicado por: DarkFenix en Abril 18, 2011, 04:04:30 PM
En mi juego de tanques me gustar?a que una vez destruido el tanque contrario, apareciera para el segundo asalto en la misma room, pero de unas formas concretas:
-Que no aparezca en donde ya hay objetos (para que no se atasque con las paredes)
-Que no aparezca fuera de la room.
Título: Re: ?Segundo asalto!
Publicado por: Markus en Abril 18, 2011, 06:33:04 PM
Y si reinicias en room?? Para esto tendrias que almacenar los datos en variables globales o en un objeto persistente. De este modo volver?an a aparecer en las mismas posiciones los tankes.
Título: Re: ?Segundo asalto!
Publicado por: ArcariaOnline en Abril 18, 2011, 09:26:13 PM
Mmm al decir que no quieres que aparezca donde hay paredes te refieres a que el tanque aparecer? al azar en el room cuando este sea eliminado? Si es asi puedes usar esto:

En el obj_tanque_contrario
Evento crear:

[gml]
//Se crea el tanque al azar
x=irandom(800)//Suponiendo que la room mida 800x600
y=iramdom(600)
[/gml]

En el obj_tanque_contrario pon esto en el evento de colisi?n con el obj_pared(o cualquier otro obst?culo):
[gml]var dir;
dir=random(360);
while (place_meeting(x,y,other))
{
x+=lengthdir_x(1,dir);
y+=lengthdir_y(1,dir);
}[/gml]

Lo que hace esto es que si el tanque aparece en una pared se mover? al azar a otra posici?n que este libre usando solo los pixeles necesarios.

Saludos espero que te sirva

Título: Re: ?Segundo asalto!
Publicado por: abdias2d en Abril 19, 2011, 07:24:03 AM
Tambi?n podr?as crear respawn points, unos que hayas se?alado previamente. Y que aparezca al azar en alguno de estos, siempre y cuando no haya otro jugador o enemigo en el. Es solo la idea pero igual es sencillo lograrlo.

Si necesitas m?s ayuda, aqui estamos. Saludos!
Título: Re: ?Segundo asalto!
Publicado por: DarkFenix en Abril 19, 2011, 01:10:56 PM
Lo explico m?s detalladamente:
-Tenemos dos jugadores con un tanque cada uno.
-Uno destroza al otro.
-Se suma un punto a la cuenta del que lo ha destrozado.
-El que acaba de perder tiene que aparecer en un sitio libre de la room, sin ning?n objeto de por medio para que no se atasque con una pared.

El cuarto punto es el que no s? hacer, y con lo que propone ArcariaOnline me sale en una colisi?n cualquiera (por culpa de c?mo rotan los tanques) as? que necesito algo que se pueda poner en el objeto que cuenta los score y no el tanque destruido.
Título: Re: ?Segundo asalto!
Publicado por: abdias2d en Abril 19, 2011, 10:06:29 PM
Checa el ejemplo que adjunto, algo as? se me ocurre

Saludos espero te sea ?til  ;)
Título: Re: ?Segundo asalto!
Publicado por: Metal Mario en Abril 20, 2011, 12:34:50 AM
Podrias eliminar la instancia cuando colisione con el solido en donde no quieres que el tanque sea creado. Pero no sabria decirte como hacerlo aparecer en una posicion redondeada a 16 y 16. Lo primero es facil, pero que quede justamente en un cuadro es lo que no sabria explicarte.
Título: Re: ?Segundo asalto!
Publicado por: elviskelley en Abril 25, 2011, 05:05:20 AM
var a, b;
a=x+randon(640);
b=y+random(480);
if position_empty(a,b)
{instance_create(a,b,objtanke);}