Hola, estoy haciendo un juego de pulsar la pantalla (clicker) y me gustaria obtener un codigo con el que pudiera pulsar la pantalla muchas veces por segundo, el juego es de este estilo:
https://play.google.com/store/apps/details?id=com.noodlecake.bitcoin
https://play.google.com/store/apps/details?id=br.com.tapps.moneytree
Se podria hacer algun codigo para realizar esa acción??
yo tengo implementado este codigo, pero me resulta un poco lento
En el create del objeto:
z=0
pulsar=true
Y en step:
for(u=0 u<2 u++){
if(mouse_check_button(mb_left) && pulsar){
z++
pulsar=false
}
if(!mouse_check_button(mb_left)) pulsar=true
}
Creo que es más fácil usar un evento GLOBAL LEFT MOUSE PRESSED y ahí poner z++, sin necesidad de usar variables adicionales como pulsar
yo solo quiero que cuente cuando el objeto que yo quiero sea pulsado, si no recuerdo mal el global left es para pulsar donde sea de la room y lo de poner solo la z++ como seria? asi en el step?
z++
solamente eso?
Cita de: chetuu16 en Abril 20, 2015, 10:30:47 PM
yo solo quiero que cuente cuando el objeto que yo quiero sea pulsado
Bueno, pero eso no lo mencionaste originalmente:
Cita de: chetuu16 en Abril 20, 2015, 03:54:34 PM
Hola, estoy haciendo un juego de pulsar la pantalla (clicker)
Y sería cuestión de en lugar de usar GLOBAL MOUSE LEFT PRESSED, cambiar a MOUSE LEFT PRESSED. Y sí, es suficiente con poner z++, porque justamente los eventos pressed sólo se ejecutan una vez por click. Si en lugar de evento, quieres usar STEP, entonces en lugar de la función
mouse_check_button() se usaría
mouse_check_button_pressed()
Resumiendo, que con quitarle la variable pulsar, iría mas deprisa??
Pd: se podria poner algun objeto que me contase las pulsaciones por segundo??
Cita de: chetuu16 en Abril 21, 2015, 07:34:41 AM
Resumiendo, que con quitarle la variable pulsar, iría mas deprisa??
No necesariamente. No es que quitandola vaya más de prisa, sino que, si se usa un evento PRESSED o una función pressed, la variable "pulsar" no es necesaria. No lo he probado, pero si tu velocidad de juego es de 30 fps, creo que usando evento pressed (o función pressed), el número mayor de pulsaciones que el juego podría detectar en un segundo serían 15. Eso es muy rápido. Si se aumentara la velocidad a 60 fps, pues aumentaría al doble la cantidad de detecciónes POSIBLES, pero no creo que haya una persona que pueda realizar 30 pulsaciones por segundo.
Desde luego que es posible crear código para contar las pulsaciones por segundo. Hay distintas maneras de hacerlo. Una es usando una alarma que se ejecute cada segundo, y en donde se limpie el valor del contador de pulsaciones. Antes de limpiar ese contador, su valor se guarda en otra variable, y esa otra variable se dibuja en pantalla (en DRAW).
a ver, resumiendo que no se si lo he captado :-[ :-[
Quiero que en un objeto, puedas pulsar la mayor cantidad de veces por segundo, solo en ese objeto, ya sea con un dedo, con dos o con los que sean, pero solo pulsando ese objeto, entonces, en el step de ese objeto pongo un codigo que sea: z++??
Necesitas varios contadores. Puedes algo como ésto en el evento Create (o en donde se necesite comenzar a contar)
[gml]
steps = 0; //cantidad de steps transcurridos
segs = 0; //segundos transcurridos, es proporcional a la cantidad de steps
zps = 0; //clicks o pulsaciones por segundo
z = 0; //contador de clicks o pulsaciones
[/gml]
En el evento Left Pressed o Global Left Pressed se incrementa el contador z
[gml]z ++; //incrementar contador de clicks[/gml]
En el evento Step se incrementa el contador de steps y se hacen otros cálculos
[gml]
steps ++; //incrementar contador de steps
segs = steps / room_speed; //calcular los segundos trancurridos
zps = z / segs; //clicks por segundo
[/gml]
Solo me gustaría señalar, viendo que nadie lo ha hecho, que el GMS en dispositivos móviles cuenta dos taps veloces consecutivos como un click izquierdo (el primero) y un click derecho (el segundo).
Probablemente sea por eso que sientes tu código original un poco lento. Cada segundo tap está siendo ignorado.
Puedes cambiar dicha configuración con la función device_mouse_dbclick_enable().
Cambio left pressed por doble click??
No. Sólo escribe esto al inicio del juego
[gml]device_mouse_dbclick_enable(false);[/gml]
graciaaass! se nota mucho con ese codigo!