Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: zangetsu en Junio 23, 2014, 05:15:28 AM

Título: como hacer que 4 objetos iguales cambien
Publicado por: zangetsu en Junio 23, 2014, 05:15:28 AM
hola a todos, estoy intentando hacer que 4 o mas objetos iguales colisionen hagan un objeto diferente, lo que intente fue lo siguiente:

en el evento collicion del objeto puse al mismo objeto al colisionar en las accion puse variable collicion 4 o mas cambiar de spite. pero no me resulto ni se mosqueo.
como lo puedo hacer y en que objeto hirian las funciones.

para que me entiendan mejor, pongo el ejemplo del candy crush cuando juntas 4 o mas caramelos iguales se fusionan en un super caramelo, bueno como logro eso?.

Título: Re:como hacer que 4 objetos iguales cambien
Publicado por: Cerez0 en Junio 23, 2014, 09:37:55 AM
Mira puedes crear un obj_control

En el create del ob_control:
global.fusion = 0
En el step del obj_control:
if global.fusion >= 3{instance_create( obj_caramelo.x,obj_caramelo.y,obj_caramelogigante);
global.fusion = 0;
with (obj_caramelo) instance_destroy();
}


En el obj_caramelo en la colision con otro obj_caramelo:
global.fusion += 1

No lo e probado pero tiene que ser algo asi si no te entendido mal.

Un saludo!
Título: Re:como hacer que 4 objetos iguales cambien
Publicado por: zangetsu en Junio 23, 2014, 08:50:13 PM
puse el tal cual me dijistes pero no pasa nada. probé  cambiando los valores haber si asi pero se eliminan todos los objetos de dicha acción antes de empezar el juego. en mi mente paresia sencillo pero veo que ahora me e comprado un problema. si alguien sabe o tiene la solución se lo agradeseria 
Título: Re:como hacer que 4 objetos iguales cambien
Publicado por: Cerez0 en Junio 23, 2014, 11:19:41 PM
Cuando lo pusiste talcual te dije metiste el obj_control en el room? XD
Título: Re:como hacer que 4 objetos iguales cambien
Publicado por: zangetsu en Junio 24, 2014, 01:44:54 AM
si, lo puse en la room.


Título: Re:como hacer que 4 objetos iguales cambien
Publicado por: zangetsu en Junio 24, 2014, 05:53:34 AM
Alguna idea de como hacer que me funsione?. ahy alguna instansea o funsion que chequee que cuando hay 4 en linea cambie de sprite por otro?
Título: Re:como hacer que 4 objetos iguales en linea cambien
Publicado por: zangetsu en Junio 24, 2014, 06:21:15 PM
 :'( :'( :'( :'( :'( :'( :'( no me saleeee
Título: Re:como hacer que 4 objetos iguales cambien
Publicado por: Guacusio en Junio 25, 2014, 07:19:05 AM
No hay una función simple que pueda ayudarte, lo que quieres hacer es bastante complejo por la cantidad de casos que pueden darse. Toma en cuenta que no es adecuado utilizar el evento colisión para esto ya que las piezas no necesariamente tienen que colisionar para formar una línea (por ejemplo cuando se forma una línea horizontal). Te sugiero como idea que crees una función recursiva que analice, para una pieza dada, todas las piezas que están adyacentes a ella, incrementando un contador cada vez que encuentre una pieza contigua del mismo tipo en la misma fila o columna.
Título: Re:como hacer que 4 objetos iguales cambien
Publicado por: 3dgeminis en Junio 25, 2014, 07:50:45 PM
(http://i62.tinypic.com/ej5v8n.png)
Segun la imagen hay 4 casos posibles para comprobar si hay una linea de 4 piezas juntas. Una forma de hacerlo es ir viendo caso por caso usando  funciones que tra el el programa como por ejemplo instance_position(x,y,obj). Para el primer caso hay que ver si hay 3 piezas a la derecha:

act=false  ////es una variable para comprobar si se cumple al menos uno de los casos
sw=sprite_width   ////el ancho del sprite (solo para hacer mas corto el codigo)
sh=sprite_height  ////el largo del sprite (solo para hacer mas corto el codigo)

if instance_position(x+sw+sw/2,y+sh/2,pieza) and instance_position(x+sw*2+sw/2,y+sh/2,pieza) and instance_position(x+sw*3+sw/2,y+sh/2,pieza) {act=true}  ////pieza es el nombre del objeto

if act=true {"lo que quieras que pase como que se destruya la pieza"}  ////esta parte iria a lo ultimo despues de comprobar los 4 casos

El codigo x+sw+sw/2,y+sh/2 lo que hace es solo buscar el centro del sprite.
Título: Re:como hacer que 4 objetos iguales cambien
Publicado por: zangetsu en Junio 26, 2014, 07:49:40 PM
entiendo lo que hacen esas funciones y todo pero no entiendo porque no pasa nada, lo pongo bien, cree un objeto lo coloque en la room le puse en el evento create tu codigo modificandole el objeto a afectar, pero nada. (después lo que hice fue poner el codigo directo en el objeto mismo pero tampoco, luego lo puse en el scripts que se encarga de posicionar los objetos en la room y nada= ambos casos me producen un error= opar_box-draw-sl_1). el juego que utilise de base para hacer el mio lo saque de esta pagina se llama match_3_engine. de seguro lo conocen bien
Título: Re:como hacer que 4 objetos iguales cambien
Publicado por: 3dgeminis en Junio 26, 2014, 08:52:46 PM
Sin subir el ejemplo de lo que tenes echo es imposible saber donde esta el error. O podes empezar desde cero sin usar el ejemplo de match_3_engine
Título: Re:como hacer que 4 objetos iguales cambien
Publicado por: zangetsu en Junio 30, 2014, 02:00:10 AM
perdon por la demora, este es el juego que quiero que al hacer 4 o mas del mismo color cambie por un solo objeto distinto, es de GM 8. es exactamente lo mismo que mi proyecto, el mio no lo puedo subir porque no esta terminado, pero igual es lo mismo no le cambie nada.

gracias por responder
Título: Re:como hacer que 4 objetos iguales cambien
Publicado por: empardopo en Julio 02, 2014, 07:58:52 AM
Cita de: zangetsu en Junio 30, 2014, 02:00:10 AM
perdon por la demora, este es el juego que quiero que al hacer 4 o mas del mismo color cambie por un solo objeto distinto, es de GM 8. es exactamente lo mismo que mi proyecto, el mio no lo puedo subir porque no esta terminado, pero igual es lo mismo no le cambie nada.

gracias por responder

Pues a mí al intentar ejecutar el proyecto me da el siguiente error:
In Room rEngine, Room Creation Code, at line 1: Unknown function or script: show_info

Y no tengo ni idea de donde se produce...
Título: Re:como hacer que 4 objetos iguales cambien
Publicado por: zangetsu en Julio 02, 2014, 09:33:42 PM
el juego es de Game Maker 8, lo abriste con ese?
Título: Re:como hacer que 4 objetos iguales cambien
Publicado por: penumbra en Julio 02, 2014, 09:44:10 PM
He hecho un ejemplo sencillo  y parece que funciona. Sólo consiste en la funcionalidad básica de detectar los cuatro objetos en línea (horizontal, vertical y diagonales) y gurdar sus id en una ds_list. Tú tendrías que adaptarlo a tu juego porque no he implementado detalles como qué pasa cuando se detectan los cuatro objetos, y también una vez que hagas lo que sea con esos 4 objetos, quedaría pendiente borrarlos de la ds_list.

Tutorial explicando la idea y proyecto .gmz:
http://www.inventati.org/estupidezartificial/web/papers/linea.html (http://www.inventati.org/estupidezartificial/web/papers/linea.html)