Mayo 01, 2016, 03:42:52 AM Ultima modificación: Mayo 01, 2016, 07:28:23 AM por eams1986
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]
alaberga regué el café.

BA:STFW&RTFM

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.
alaberga regué el café.

BA:STFW&RTFM

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.
alaberga regué el café.

BA:STFW&RTFM

#6 Mayo 01, 2016, 05:14:34 AM Ultima modificación: Mayo 01, 2016, 06:35:51 AM por eams1986
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


#7 Mayo 01, 2016, 05:28:05 PM Ultima modificación: Mayo 01, 2016, 05:29:42 PM por JohnW
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.