Comunidad Game Maker

Ayuda => Preguntas y respuestas => Mensaje iniciado por: DarkKRuleR en Febrero 07, 2011, 11:38:57 PM

Título: [Solucionado] No se asigna una variable
Publicado por: DarkKRuleR en Febrero 07, 2011, 11:38:57 PM
Buenas, pues la situaci?n es la siguiente...
en mi juego (Shadow's Destiny: Ragnarok, juega y comenta! Publicidad gratuita!  XD) el personaje tiene una miniconsola donde puede jugar juegos arcade de toda la vida. En el primero que estoy haciendo, aparecen un monton de bolitas arriba y abajo. La cosa es que las creo con este codigo:

repeat(5) ID=instance_create(random_range(x-110,y+110),choose(y-100,x+100),obj_juegoS_bola_good);
repeat(2) IA=instance_create(random_range(x-110,y+110),choose(y-100,x+100),obj_juegoS_bola_bad);
ID.speed=random_range(0.2,1.5); ID.direction=random(360);
IA.speed=random_range(0.2,1.5); ID.direction=random(360);


Vale, la cosa es que se crean varias bolas en aleatorias posiciones superiores o inferiores, en este caso, 5 verdes y  2 rojas. La cosa es que luego les aplico velocidad y direcci?n. SI PONGO los codigos de velocidad y direccion en "create" de cada bola va perfecto, o eso comprob? al principio. Pero... porqu? 3/4 de las bolas se quedan paradas al comenzar? Acaso poner objeto.variable=1 no cambia la "variable" de TODOS los "objeto"? Veo el codigo correcto, no veo qu? le puede pasar...
Título: Re: No se asigna una variable
Publicado por: LigTopet en Febrero 08, 2011, 07:18:02 AM
Creo que un simple acomodo del codigo lo solucionaria:
[gml]
repeat(5)
{
     ID=instance_create(random_range(x-110,y+110),choose(y-100,x+100),obj_juegoS_bola_good);
     ID.speed=random_range(0.2,1.5);
     ID.direction=random(360);
}
repeat(2)
{
     IA=instance_create(random_range(x-110,y+110),choose(y-100,x+100),obj_juegoS_bola_bad);
     IA.speed=random_range(0.2,1.5);
     IA.direction=random(360);
}
[/gml]

Lo que pasa es que despu?s de repetir las 5 y 2 veces, las variables ID e IA se quedaba con el id del ?ltimo objeto que se creaba, recuerda que el repeat es un bucle y el c?digo no continuara hasta terminarlo.

Cita de: DarkKRuleR en Febrero 07, 2011, 11:38:57 PM
Acaso poner objeto.variable=1 no cambia la "variable" de TODOS los "objeto"? Veo el codigo correcto, no veo qu? le puede pasar...

Solo si objeto es el index de un object, pero en este caso es el id de una instancia.

Saludos
Título: Re: No se asigna una variable
Publicado por: DarkKRuleR en Febrero 08, 2011, 03:33:19 PM
Entiendo, parece que, como los objetos les asigno la "ID", al manejar la ID s?lo se maneja la del ?ltimo! Eso da sentido a porqu? s?lo se mov?an dos bolitas, porque s?lo se asignaba 2 veces... voy a probarlo aver...

genial, se mueven todas las bolitas xD Graciass!