[eside-ghost] C++ & Glut
Jon Valdés
juanval en gmail.com
Lun Nov 19 02:19:45 CET 2007
On Nov 18, 2007 10:29 PM, Turin <nohadonja en gmail.com> wrote:
> Wenas. Mi primer mensaje a la lista :)
> Alla va:
>
> Intento, para un juego, que las teclas WASD muevan al personaje y el ratón
> sirva para girar. Aquí me surgen un par de problemas:
Pues a ver si se puede ayudar ;)
> - Teclado: la tecla pulsada la saco con glutKeyboardFunc [1]. Al parecer
> solo recoge la pulsación de una tecla cuando me gustaría que fueran 2 a la
> vez. (Y de paso que no haya retardo antes de desplazarse en contínuo (estilo
> como cuando pulso una letra y tarda en empezar a repetirse)
Esto lo que se suele hacer es mantener un array con las teclas que
quieres controlar durante el juego, y mantener ahi su estado (pulsada
o no).
Cuando llega un evento de "tecla pulsada" al glutKeyboardFunc, pones a
true el valor correspondiente del array. Y cuando llega un evento de
"tecla levantada", lo pones a false.
Luego, todos los frames compruebas el estado de cada una de las teclas
en ese array, y actuas en consecuencia :)
> -Ratón: usando glutPassiveMotionFunc [1] recoge el movimiento del ratón,
> pero necesito poder girar la vista el tiempo que quiera. Obviamente en modo
> ventana no puedo porque el ratón deja de hacer focus en el juego, pero en
> fullscreen no me deja porque llega al borde de la pantalla (he tratado de
> ocultar el cursor pero hace eso, ocultar).
Para esto el truco suele ser mover el ratón al centro de la pantalla
todos los frames :)
En cada frame miras cuánto se ha movido el ratón desde el centro de la
pantalla, y lo vuelves a poner en el centro.
Si el usuario es muy burro igual consigue llevar el ratón hasta el
borde en un solo frame... pero no suele ser el caso xD
Suerte ;)
taluegoooo
Más información sobre la lista de distribución eside-ghost