Hola comunidad como andan!
Bueno tengo un problema talves me puedan ayudar ;D
Tengo un obj_1 , obj_2 y obj_ meta
Lo que necesito es comprobar que el obj_1 este colisionando con el obj_2 para que me habilite el obj_meta de lo.contrario no me habilite el obj_meta.
Lo he estado pensando pero no tengo idea alguna.
Gracias de antemano
Edito:como seria para agregar mas de los obj2.
Ya que el obj1 es el inicio entonces abrían más del objeto 2
Primero desactivas el obj_meta:
[gml]
instance_deactivate_object(obj_meta);
[/gml]
Y luego, en el evento colisión del obj_1 con el obj_2 o viceversa:
[gml]
instance_activate_object(obj_meta);
[/gml]
Hola y gracias NiuWeb
Puse lo que escribió pero hay un problema el obj_meta se desaparece y no quiero eso .
Talves con el uso de true o false digo yo XD
Gracias
Cita de: eams1986 en Mayo 01, 2016, 04:03:23 AM
Hola y gracias NiuWeb
Puse lo que escribió pero hay un problema el obj_meta se desaparece y no quiero eso .
Talves con el uso de true o false digo yo XD
Gracias
Pero ¿Qué es lo que quieres que pase cuando se colisionen? Porque dices "que se habilite", pero eso puede significar una infinidad de cosas.
Creo que ya se a que te refieres, por ejemplo.
Digamos que obj_1 es el player, obj_2 la llave que activa obj_meta, y obj_meta la puerta.
Entonces si esto es lo que quieres hacer pues podrías hacer esto:
En el obj_meta y en colision con el obj_1[gml]if instance_exists(obj_2){
// lo que quieras que pase por ejemplo room_goto(nivel_siguiente);
}else{
// lo que quieras que pase si no tienes esa llave por ejemplo un texto que diga, necesitas la llave.
}[/gml]
Lo de instance_exists solo te servira si el obj_2 NO está en la room. En caso de que SI este...
Podrias hacer lo mismo pero en vez de instance_exists podrias poner una variable en el obj_2 que al colisionar con tu obj_1 se active[gml]activar = 0;[/gml]
y luego en colisionar[gml]activar = 1;[/gml]
Y por último en la obj_meta le podrias poner[gml]if activar = 1{
room_goto(nivel_siguiente)
}else{
// necesitas llave
}[/gml]
O más fácil, en el <create> del obj_meta:
[gml]
activado = false;
[/gml]
Y, digamos que, <collision> con obj_1:
[gml]
if (activado)
room_goto(olakase);
[/gml]
Después, en el colisión de obj_1 con obj_2 o viceversa:
[gml]
obj_meta.activado = true;
[/gml]
Lo que hará que al colisionar con la meta, si no está activada, no haga nada, y si lo esá, ir a otra sala. Además, para activarla, hay que colisionar con el objeto 2.
Hola gracias por contestar me.quede con el método más fácil el de NiuWeb .
Gracias funciona perfecto.
Una cosita más como hacer para agregar muchas más llaves.
En algunas pantallas habrán más que en otras
Buena imaginación tiene jhon gracias
Gracias
Cita de: eams1986 en Mayo 01, 2016, 05:14:34 AM
Hola gracias por contestar me.quede con el método más fácil el de NiuWeb .
Gracias funciona perfecto.
Una cosita más como hacer para agregar muchas más llaves.
En algunas pantallas habrán más que en otras
Buena imaginación tiene jhon gracias
Gracias
Si quieres poner más de una llave en el mismo nivel... pues siguiendo el ejemplo anterior de NiuWeb lo que puedes hacer es modificarlo de esta manera:
[gml]activado = 0; [/gml]
En colision cambias por esto:[gml]if (activado) = 5
room_goto(olakase); // Lo cambiamos a 5, o por el número que quieras depende de las llaves que pongas[/gml]
Y en la colision con la llave lo cambias por esto:[gml]obj_meta.activado += 1; //Esto lo que hace es que al tocar una llave o cogerla, suma 1 a la variable activado.[/gml]
Entonces la variable activado empieza en 0, la meta no se activara hasta que la variable sea igual a 5, y por cada llave que cogas aumentas +1 a la variable activado, por lo tanto si pones 5 llaves y las activas todas, la variable activado sera igual a 5 y podrás pasar de nivel de lo contrario tendrás que seguir buscando llaves.