33 votes

Comment puis-je implémenter une vue FPS avec WebGL dans un navigateur?

Je suis en utilisant Copperlicht, et je veux créer un utilisable FPS. La démo contrôles montre pourquoi le navigateur de l'environnement, rend cette douleur.

Afin de mettre en œuvre des FPS contrôle de la caméra, vous devez suivre le relatif de la position de la souris - en d'autres termes, son mouvement, pas son écran des coordonnées absolues. La souris peut quitter le navigateur à tout moment (à juste titre) et ne peuvent pas être suivis, à moins que l'utilisateur lance un événement glisser à l'intérieur de la page. Cliquez sur les événements à changer d'orientation et d'empêcher l'application de la souris en utilisant des données en entrée.

La position de la souris peuvent être suivis au cours de glisser, mais cela oblige l'utilisateur à maintenir leur bouton gauche de la souris. Ce n'est pas bon puisque cliquant à gauche est généralement utilisé pour d'autres choses. Maintenez la touche enfoncée est aussi fatigant et contraignant.

La seule chose que je peux penser à est de l'automatisation du bouton central de la souris. Un milieu de la souris, appuyez sur le bouton de garde le focus dans le navigateur, et qui garde à gauche/à droite, cliquez sur événements à l'extérieur de la fenêtre du navigateur dans le navigateur de l'accent. Est-il possible de provoquer bouton central de la souris pour rester appuyé sur l'aide de JavaScript?

Si non, est-il un "pur" solution à cela ? Je ne rentrerais pas de flash ou Java, ou un plugin comme une réponse.

4voto

Daniel Baulig Points 4849

Ce fil est une bonne lecture sur ce sujet. Il semble que des prototypes pour cette fonctionnalité soient au moins suggérés pour Firefox et Chrome .

3voto

Alexander Points 1851

Que diriez-vous de faire la fenêtre en plein écran, puis de suspendre le jeu si le curseur sort de la fenêtre? Je sais que cela ne résout pas vraiment le problème, mais c'est le meilleur auquel je puisse penser, sans utiliser un plugin quelconque.

1voto

Dan Beam Points 2045

C'est une sorte de tricherie, mais passer à about:flags dans Chrome et activer le "compteur FPS" fonctionne pour moi, :) (mais ce n'est pas le cas pour tous les navigateurs ni dans votre application WebGL).

0voto

Johnny DropTables Points 432

J'ai trouvé cet exemple de code sur http://bitdaddys.com/javascript/example3run.html

  <html>
<head>
<title>JavaScript Example of Mouse Position Tracking</title>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>

<body>
<form name=thisform>
<table border=0>
<tr><td colspan=2>Position Of Cursor</td></tr>
<tr><td>X <input type=text name=x value=""></td>
    <td>Y <input type=text name=y value=""></td>

</tr>
</table>
</form>

<script type=text/javascript>
    var isIE = document.all?true:false;
    if (!isIE) document.captureEvents(Event.MOUSEMOVE);
    document.onmousemove = getMousePosition;
    function getMousePosition(mp) {
      var _x;
      var _y;
      if (!isIE) {
        _x = mp.pageX;
        _y = mp.pageY;
      }
      if (isIE) {
        _x = event.clientX + document.body.scrollLeft;
        _y = event.clientY + document.body.scrollTop;
      }
      document.thisform.x.value=_x;
      document.thisform.y.value=_y;
      return true;
    }
</script>


</body>
</html>
 

0voto

Omiod Points 3079

Nous avons besoin de la fenêtre pour pouvoir capturer la souris, comme on le voit avec certains plugins de navigateur, peut-être en Java. Flash n'a pas cette capacité, AFAIK.

En tant que sidenote, lors de la capture pour "récupérer la souris", vous devez appuyer sur ESC, et cela peut être gênant lorsque l'application n'informe pas correctement l'utilisateur.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X