Hola a tod@s de nuevo !!
He estado intentando crear objetos aleatorios con una velocidad de desplazamiento aleatoria, pero ni consigo que aparezcan en un orden aleatorio.
He hecho un croquis para que se entienda mejor:
(http://www.subeimagenes.com/img/idea1-965305.jpg)
- Tenemos 3 objetos (cada uno con un sprite distinto), pueden ser 3 o 4, 5, 6, 7...
- Hay 4 pistas y por cada una de esas pistas, deben de pasar los objetos de forma aleatoria a una velocidad determinada (4, 8, 12, 16...)
- Las flechas indican hacia q sentido se deben de mover los objetos (derecha, izquierda, derecha, izquierda)
El tema principal, es como crear los objetos de una forma aleatoria y q aparezcan por las coordenadas especificadas X, Y.
¿Alguien me puede ayudar?
Saludos y gracias !!
randomize()
instance_create(x, y, choose(obj_1, obj_2, obj_3))
para la velocidad aleatoria:
hspeed = irandom_range(vel_min, vel_max)
Me crea el objeto, pero no se mueve hacia ningun lado ni a ninguna velocidad.
¿Cómo se cambia la velocidad y que se mueva hacia alguna lado en GML?
He puesto:
hspeed = irandom_range(4, 16)
Y no se mueve hacia ningun lado.
Cita de: djboro88 en Mayo 16, 2014, 12:08:54 AM
He puesto:
hspeed = irandom_range(4, 16)
Y no se mueve hacia ningun lado.
Ese código de
hspeed debe ir en el evento CREATE de cada uno de los objetos que quieres crear. ¿Así lo tienes?
OK !!
El problema surje cuando kiero ponerlo de derecha a izquierda, que no aparecen.
Solo funciona de de izquierda a derecha.
Os adjunto el archivo GMZ para que lo probeis vosotros mismos y ver lo q ocurre.
Solo funciona de izquierda a derecha, pero al contrario no.
En los objetos he puesto:
if(mover == 1){ direction = 0; }
if(mover == 2){ direction = 180; }
hspeed = irandom_range(4, 16)
Y en el objeto que los crea aleatoriamente los izquierda a derecha:
var mover;
mover = 1;
instance_create(0, 112, choose(obj_coche1, obj_coche2, obj_coche3))
Y en el objeto que los crea aleatoriamente los derecha a izquierda:
var mover;
mover = 2;
instance_create(1008, 176, choose(obj_coche1, obj_coche2, obj_coche3))
Pero me lanza un error.
############################################################################################
FATAL ERROR in
action number 1
of Create Event
for object obj_coche2:
Push :: Execution Error - Variable Get -1.mover(100020, -1)
at gml_Object_obj_coche2_Create_0 (line 1) - if(mover == 1){ direction = 0; }
############################################################################################
¿Alguna ayuda?
El objeto problemático era el obj_crea2
Este es el código que va en [CREATE]
randomize()
cochesin = instance_create(1008, 176, choose(obj_coche1, obj_coche2, obj_coche3))
cochesin.hspeed = irandom_range(-4, -16)
Lo único importante, y que había olvidado comentarte, es que instance_create() devuelve el id de la instancia que se crea, y este id lo puedes guardar en una variable, y así ajustar la hspeed de esa instancia recién creada, tal como indica la tercer línea del código
Las mismas tres líneas de código van en el evento alarma del obj_crea2. Así lo hice y ya se crean los coches avanzando de derecha a izquierda
OK, muchas gracias !!
Funciona 100% perfecto
Una consulta mas sobre esto...
Para darle la vuelta al sprite he visto que se hace con sprite_index.
En el objeto crea2 pongo lo siguiente:
cochesin.image_index = 180;
Pero no da la vuelta. ¿Que hago mal?
Solucionado !!
cochesin.image_xscale = -1