Hola de nuevo gente !!
Estoy intentando poner un contador en mi juego para que el jugador sepa el tiempo que tarda en hacer una acción, pero estoy trabado.
Lo he intentado de varias formas, con alarmas, con Steps...
Os dejo lo que mejor se aproxima. En un objeto que uso SOLO para el contador tengo:
CREATE
nTiempo = 0;
STEP
nTiempo +=1;
DRAW
draw_set_color(c_white);
draw_set_font(font0);
draw_text(180,160,nTiempo/30);
Más sencillo no se puede, ¿no?
Pues a partir del segundo 15 o así, el tiempo lo empieza a contar cada vez más lento. Es como si se le fueran acabando las pilas al reloj :-)
Lo he probado con un proyecto vacío y va bien, pero en el mío no...
¿Alguna idea?
Un saludo.
Que raro, haz revisado en el modo debug a ver si tus fps se quedan estáticos en 30?.
Como sea el modo más exacto de crear un contador es usando el reloj de la computadora. Para esto se usan las funciones date_get que dependiendo del tipo puedes obtener el año, mes, día, hora, minuto, segundo, o milisegundo actual.
[gml]
//Create, game start o donde sea que el contador inicie o reinicie.
global.segundoInicial=date_get_second( date_current_time() );
//Draw
tiempo=date_get_current_second-global.segundoInicial;
draw_text_ext_color(180,160,string(tiempo),-1,250,global.blanco,global.blanco,global.blanco,global.blanco,1);
[/gml]
He probado lo que me pasas, pero he cambiado
date_current_time() por date_current_datetime()
porque la primera función no la tengo...
Y la segunda: date_get_current_second
tiempo=date_get_second(date_current_datetime())-global.segundoInicial;
El problema es que algunos segundo NO los pinta. Parece que no va mal, pero se los salta...
1 -> 3 -> 4 -> 5 -> 7 ....
Volviendo a mi idea original (la del post original), he hecho una prueba más...
He cambiado a 10 el speed room. Parece que así el retardo que tiene el reloj es menor. Al menos llego al minuto con todos los segundos más o menos iguales. Lo malo es que cuento décimas en lugar de las milésimas...
Si a alguien se le ocurre un por qué pasa esto, soy todo oídos...
Tienes puesto lo que te dije en draw?. Sinceramente no tiene sentido a menos que gm:studio tenga un bug, o que tu juego tarde más de un segundo en procesar un frame :o.
Hombre revisa tus fps lo de que funcione mejor poniendo la room speed baja es una prueba de que seguramente tu juego varia mucho su velocidad.
Intenta usando la variable current_time, que devuelve la cantidad de milisegundos que han pasado desde que abriste el juego.
[gml]
//Create, game start o donde sea que el contador inicie o reinicie.
global.miliSInicial=current_time;
//Draw
tiempo=current_time-global.miliSInicial;
draw_text_ext_color(180,160,string(tiempo/1000),-1,250,global.blanco,global.blanco,global.blanco,global.blanco,1);
[/gml]
Ya está solucionado...
Fallo mío, y de los grandes :-)
Tenía en el DRAW puestos 25 create_instance que tenía que tener en el CREATE.
Así se iba quedando sin memoria el sistema... jajjajaja
Casi me da vergüenza confesar esto... jajajaja... ¡¡ Qué fuerte !!
En fin, todo solucionado...
Es que incluso lo pasé a la tablet, reinicié el PC, de todo... Y al final em dio por verificar el DRAW porque pensé lo que tú decías, que igual estaba tardando mucho en repintar, y claro que tardaba !!!! Cuanto más tiempo pasaba más instancias había :-)
En fin, gracias por ayudarme !!!
Un saludo.
Jaja xD que raro que no hayas notado que tu juego se alentaba periódicamente o que después de unos 5 minutos de juego tu juego colapsaría XD.