Hola gente, tengo el siguiente código
randomize()
instance_create(900,-59,choose(obj_caja,obj_vampiro,obj_explosivos))
Lo que hace es crear un objeto al azar en las coordenadas que están especificadas.
El código funciona pero en parte. Verán, cada vez que el nivel se reinicia, funciona, genera un objeto aleatorio en esas coordenadas, el problema es que no esta funcionando cuando cierro el juego y lo vuelvo a abrir. Es decir, si cierro el juego y lo abro nuevamente, no cambia aleatoria mente de objeto, pero si el nivel se reinicia si.
¿Cómo lo podría solucionar? o ¿Qué me esta faltando?
En que evento pones el código.
Cita de: vampy09 en Marzo 26, 2014, 11:53:09 PM
En que evento pones el código.
En el evento create
Siempre que cierras el juego y lo vuelves a abrir, aparece en el mismo sitio?
Cita de: LowHertzs en Marzo 27, 2014, 12:16:54 AM
Siempre que cierras el juego y lo vuelves a abrir, aparece en el mismo sitio?
Exacto, pero si por ejemplo se reinicia la room, ahí si funciona
Osea que cuando inicias un nuevo juego siempre es el mismo objeto el que aperece de primero y ese es tu problema?
O lo que deseas es que no aparezca en la misma coordenadas?
Cita de: vampy09 en Marzo 27, 2014, 01:12:06 AM
Osea que cuando inicias un nuevo juego siempre es el mismo objeto el que aperece de primero y ese es tu problema?
O lo que deseas es que no aparezca en la misma coordenadas?
Mi problema es que siempre aparece el mismo objeto, las coordenadas solo indican donde tiene que aparecer el objeto al azar, y funciona bien.
Lo vuelvo a explicar, cada vez que inicio el juego siempre sale el mismo objeto, por lo tanto no hay random, pero si por ejemplo se reinicia la room porque me mato algun enemigo, ahí si se generan objetos al azar.
Creo que tu problema es con la forma en que GM:S hace el calculo random, la forma en que calcula el random siempre es la misma pero por cada partida lo que da el mismo resultado (lo que no ocurría antes en GM8) es decir, si está funcionando tu código pero el resultado random es el mismo cuando reinicias el juego, la verdad no se por que GM:S hace esto, a mi también me pasa, es como si tiraras un dado 3 veces y salieran valores distintos, pero vuelves a jugar al mismo juego y tiras el dado 3 veces y salen los mismo 3 números.
Solución??, pues no se si se puede arreglar de alguna forma, pero yo lo que haría es multiplicar el resultado por un valor irrepetible como la hora actual (hora,minuto,segundo) así cada vez que lo juegues será diferente como tu hora.
Saludos
De lo que he leido el GM:S siempre va ha generar la misma seed inicial (el porque de esto es que cuando diseñamos/creamos el juego podriamos querer obtener los mismos resultados aleatorios cada vez que ejecutamos el juego y de este forna ayudarnos con el debugging)
Por tanto el randomize() siempre tomar la misma seed inicial lo que produce que se escoja el mismo primer objeto.
Pon la siguiente función en un objeto que se cree al inicio del juego (tal vez en el main menu):
random_set_seed( current_time );
http://gmc.yoyogames.com/index.php?showtopic=544036 (http://gmc.yoyogames.com/index.php?showtopic=544036)