Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: kaliman777 en Enero 02, 2012, 04:16:43 PM

Título: Llamar instancias creadas de objetos
Publicado por: kaliman777 en Enero 02, 2012, 04:16:43 PM
Hola gente GM: FELIZ NAVIDAD Y PR?SPERO 2012

Primero:

Event Key Control
[gml]
objeto1=instance_create(10,10,choose(vaca,perro,gato,loro,gallina));
objeto2=instance_create(10,100,choose(vaca,perro,gato,loro,gallina));
objeto3=instance_create(10,200,choose(vaca,perro,gato,loro,gallina));
alarm[0]=20;
[/gml]

Luego quiero que esa alarma lo que haga es que si el objeto 1 y el objeto 2 y el 3 tienen la misma figura (digamos salieron tres vacas). Hacer cosa como global.score+=100.

D?nme ideas concretas. Yo s? que funciona con ifobjeto1.sprite_index=objeto2.sprite_index{}, pero yo quiero llamar objetos directamente por ejemplo si el la vaca sale en la posici?n 10,10 que se cambie por el objeto animado vaca_gif.

Espero alguna ayuda al respecto.  Gracias


Título: Re: Llamar instancias creadas de objetos
Publicado por: MaanuRP en Enero 02, 2012, 05:05:14 PM
Al crear los objetos y asignarles su ID a una variable (En este caso objeto1) puedes modificar lo que tu quieras.

[gml]if objecto1.variable = objecto2.variable {}[/gml]

Ahi modificas "variable" por lo que quieras igualar y listo, ya que ya tienes sus IDs.

Tu idea de los sprites esta bien. Si quieres que sea por coordenadas haz algo como:

[gml]
with object1
{
if x = 10 and y = 10
{
  //Acciones
}
}
[/gml]
Título: Re: Llamar instancias creadas de objetos
Publicado por: elviskelley en Enero 02, 2012, 06:17:39 PM
Hola Feliz a?o...
Con este codigo veo dificil hacerlo.
objeto1=instance_create(10,10,choose(vaca,perro,gato,loro,gallina));
objeto2=instance_create(10,100,choose(vaca,perro,gato,loro,gallina));
objeto3=instance_create(10,200,choose(vaca,perro,gato,loro,gallina));
alarm[0]=20;


usa este.
Citar
Event create.
instcrea[0]=vaca
instcrea[1]=perro
instcrea[2]=gato
instcrea[3]=loro
instcrea[4]=gallina
//estos son arrays que contendran los objects en un campo de memoria.

ahora mismo event create
ind=round(random(4)); //indice que usara el array, esto puede ir en un event de teclado o alarm si deseas varia el valor del indice.

ahora agrego esto a tu codigo.

objeto1=instance_create(10,10,instcrea[ind]));
objeto2=instance_create(10,100,instcrea[ind]);
objeto3=instance_create(10,200,instcrea[ind]);

ahora solo tengo que comparar los arrays.
if (objeto1.ind=0 and objeto2.ind=0 and objeto2.ind=0)
{global.score+=100}

//basta con comparar los indices por que al final el object creado sera el mismo segun el indice.

Título: Re: Llamar instancias creadas de objetos
Publicado por: kaliman777 en Enero 02, 2012, 07:43:05 PM
Muchas gracias a ambos, estoy aplicando a ver qu? me sale mejor.

Hall? este error:

Citar
ahora agrego esto a tu codigo.

objeto1=instance_create(10,10,instcrea[ind]));
objeto2=instance_create(10,100,instcrea[ind]);
objeto3=instance_create(10,200,instcrea[ind]);

Todos los objetos salen con el mismo sprite, siempre!!! o, sea 3 vacas o tres loros, etc. El round random no est? trabajando nadita.

Saludos!!! 8)

Título: Re: Llamar instancias creadas de objetos
Publicado por: Wadk en Enero 02, 2012, 07:45:38 PM
Pod?s usar object_index, as?:
[gml]if (objeto1.object_index == objeto2.object_index == objeto3.object_index) {
   // Los objetos son iguales.
} else {
   // Los objetos son distintos.
}[/gml]
Y...
[gml]if (objeto1.object_index == vaca) {
   // El primer objeto es una vaca.
}[/gml]
Título: Re: Llamar instancias creadas de objetos
Publicado por: kaliman777 en Enero 02, 2012, 08:28:11 PM
Cita de: Wadk en Enero 02, 2012, 07:45:38 PM
Pod?s usar object_index, as?:
[gml]if (objeto1.object_index == objeto2.object_index == objeto3.object_index) {
   // Los objetos son iguales.
} else {
   // Los objetos son distintos.
}[/gml]
Y...
[gml]if (objeto1.object_index == vaca) {
   // El primer objeto es una vaca.
}[/gml]

Prob? tu c?digo Wadk y result? que: cuando el objeto1==al 3 pero no al 2, hace lo mismo que si los tres fueran iguales. Estoy comprobando, pero parece que debo usar anden lugar de ==.
Título: Re: Llamar instancias creadas de objetos
Publicado por: Wadk en Enero 02, 2012, 10:41:32 PM
Lo siento, me confund? con otro lenguaje. El c?digo ser?a as?:
[gml]if (objeto1.object_index == objeto2.object_index && objeto2.object_index == objeto3.object_index) {
    // Los objetos son iguales.
} else {
    // Los objetos son distintos.
}[/gml]
Como dec?s, hay que usar and (que tambi?n se puede escribir &&), pero no en lugar de ==.
Título: Re: Llamar instancias creadas de objetos
Publicado por: kaliman777 en Enero 02, 2012, 10:56:22 PM
Cita de: Wadk en Enero 02, 2012, 10:41:32 PM
Lo siento, me confund? con otro lenguaje. El c?digo ser?a as?:
[gml]if (objeto1.object_index == objeto2.object_index && objeto2.object_index == objeto3.object_index) {
    // Los objetos son iguales.
} else {
    // Los objetos son distintos.
}[/gml]
Como dec?s, hay que usar and (que tambi?n se puede escribir &&), pero no en lugar de ==.

Mil gracias, ahora funciona!! Prosigo con el jueguito :P