La idea es: Estoy creando un script WebGL simple (usando el maravilloso three.js de mrdoob) que permite al usuario controlar una cámara en un mundo de objetos. Se supone que la cámara simula las cámaras de disparos en primera persona tradicionales (por ejemplo, Team Fortress 2). Es decir, la cámara se mueve solo cuando el mouse se mueve.Manejo del movimiento del mouse de cámara en Javascript (permitiendo el movimiento continuo del mouse)
Problema: en Javascript, la única manera de detectar el movimiento del mouse es si el cursor se mueve. En comparación, los juegos FPS no muestran el cursor: solo basan el movimiento de la cámara en cómo se mueve el mouse. Entonces, puedes mover el mouse por todo el mousepad en cualquier dirección y siempre funciona.
Sin embargo, en un navegador, dado que el movimiento de la cámara se basa en el cursor, no se puede mover, pero hasta ahora. Cuando el cursor toca el borde de la pantalla, el usuario no puede mirar más en esa dirección (por ejemplo, mueve el mouse hacia el borde izquierdo de la pantalla, ya no puede mirar hacia la izquierda).
La solución: He pensado en dos soluciones, pero ninguna de las cuales sé cómo implementar. O bien
Después de mover el mouse, el javascript lo restablece al centro de la pantalla. De esta forma, después de cada movimiento del mouse, el jugador puede moverse nuevamente en cualquier dirección. El problema con esto es que, en base a la investigación que he realizado, Javascript no puede controlar la posición del mouse del usuario (comprensiblemente, ya que sería una molestia incomparable en sitios malignos).
O, el mouse se "enrolla" alrededor de la pantalla. Es decir, cuando el usuario llega a un borde de la pantalla, el mouse simplemente continuará al otro lado de la pantalla. (Ver: http://www.digicowsoftware.com/detail?_app=Wraparound) Sin embargo, parece que esto tampoco es una capacidad inherente de javascript, sino que es algo que un programa de terceros podría resolver.
Entonces, ¿el problema tiene sentido? Si es así, ¿hay alguna manera de implementar las soluciones anteriores, o hay otra que me falta?
pregunta interesante. Nunca subestimes F11, es decir, visualización a pantalla completa. :-) –
@zourtney La pantalla completa no resuelve el problema debido a: 1) El mouse se limita a los límites de la pantalla; 2) con una configuración multimonitor, el mouse puede salir del área del navegador. Verifica mi respuesta allí abajo. – Chiguireitor
@Chiguireitor, sí, me doy cuenta de que la pantalla completa sola no es suficiente para un FPS adecuado por las razones que mencionas. No me di cuenta de que había un borrador de especificaciones para esto. Gracias por enseñarme algo hoy. Tu respuesta tiene mi voto positivo :-) Creo que todos estamos de acuerdo en que este tipo de requisito solo será * más * popular a medida que la tecnología web se haga más frecuente –