Tengo un juego de dos personajes, los dos personajes es el mismo objeto, se mueven igual ya que son el mismo objeto, y tienen que llegar a la meta los dos objetos, sino no se puede pasar el nivel, alguien me podria decir como hacer esto, con un objeto si que se, he creado una colision y cuando colisiona pasa al siguiente nivel, pero que los dos personajes no se, muchas gracias
Se me ocurren varias formas de resolver esto:
Las instancias del objeto personaje se podrían destruir al colisionar con el objeto meta, y el objeto meta evaluaría esto en el evento step [gml]if( instance_number(personaje) == 0 ) room_goto_next();[/gml]
Otra opción es que el objeto meta lleve un contador de las veces que colisiona un personaje colisiona con éste, pero presiento
que ésta es la forma más complicada.
También se podría activar una variable en las instancias del objeto personaje al colisionar con la meta, y el objeto meta tendría algo así en su evento Step:
[gml]
global.pasarnivel = true;
with( obPersonaje ) global.pasarnivel = global.pasarnivel and meta; //meta es una variable
if( global.pasarnivel ) room_goto_next();
[/gml]
lo estado intentando pero nada. no se que codigo poner, porque tengo que si colisiona el objeto se va a la siguiente room, pero tienen que concidir los dos objetos en la meta a la vez, hay 2 metas(mismo objeto), uno para cada personaje(mismo objeto).
Gracias
Se me ocurre lo siguiente.
Te creas 2 variables.
meta1 y meta2
meta1=0
meta2=0
en el STEP DE LOS OBJETOS
if collision_point(x,y, objmeta)
if meta1= 0
meta1= 1
else
meta2=1
AHORA EN STEP DE LA META
if meta1= 1 and meta2= 1
room_goto(la que sea)
No me funciona, lo he intentado poniento
if place_meeting(x,y,ob_cuadrado_meta)
Pero tampoco
Lo que paso esq utilizo el mismo objeto para el personaje y el mismo para la meta, si creo dos personajes y dos metas si que me funcionara, por lo menos creando otro personaje
Al final he tenido que crear otro personaje igual con la misma programacion y le he puesto esto al personaje 1:
if place_meeting(x,y,ob_cuadrado_meta)
{
global.meta_1 = 1
}
if !place_meeting(x,y,ob_cuadrado_meta)
{
global.meta_1 = 0
}
Muchas Gracias
Y al personaje 2:
if place_meeting(x,y,ob_cuadrado_meta)
{
global.meta_1 = 1
}
if !place_meeting(x,y,ob_cuadrado_meta)
{
global.meta_1 = 0
}
Ahora tengo otra pregunta, para no tener tanta progrmacion como puedo hacer que el personaje 2 haga los mismos movimiento que el personaje 1, sin utilizar el parent. Gracias
Cita de: pacne en Marzo 02, 2015, 08:59:25 PM
Ahora tengo otra pregunta, para no tener tanta progrmacion como puedo hacer que el personaje 2 haga los mismos movimiento que el personaje 1, sin utilizar el parent. Gracias
El siguiente código debe funcionar con el planteamiento original, dos instancias de un mismo objeto personaje:
Usar un objeto controlador: objControl
CREATE (objControl)
[gml]
id_meta1 = noone
id_player1 = noone
id_meta2 = noone
id_player2 = noone[/gml]
En los eventos CREATE de cada objeto
Instancia
player1:
objControl.id_player1 = id; Instancia
player2:
objControl.id_player2 = idInstancia
meta1:
objControl.id_meta1 = idInstancia
meta2:
objControl.id_meta2 = idBajo esta idea,
no es necesario un evento de colisión en ningún objeto, símplemente verificar las distancias de cada par player-meta. En el controlador:[gml]
if ( abs(point_distance(id_player1.x, id_player1.y, id_meta1.x, id_meta1.y)) < 50 ) and (abs(point_distance(id_player2.x, id_player2.y, id_meta2.x, id_meta2.y)) < 50 )
{
//ir a la siguiente habitación
}[/gml]
El código está pensado para que los personajes tengan que estar A LA VEZ en la meta, para avanzar a la siguiente habitación. Si un personaje llega a la meta, pero la abandona, y después el otro llega a la meta, NO se va a pasar a la siguiente habitación (aunque esto se puede cambiar de manera fácil usando una variable adicional)
Gracias Penumbra