問題タブ [pointerlock]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
javascript - フルスクリーン API を使用しないポインターロック
全画面モードなしでポインターロックを使用するにはどうすればよいですか?
Web 上のチュートリアルでもフルスクリーン API を使用しています: https://developer.mozilla.org/en-US/docs/WebAPI/Pointer_Lock
javascript - canvas/div 内にマウス ポインタを含めるにはどうすればよいですか?
私は現在、小さな html5 キャンバス ゲームを作ろうとしています。マウス ポインターを div 要素またはキャンバスの境界内にとどめたいです。
正しい方向に向けてください。
android - Android の一人称シューティング ゲーム - マウス イベントを処理する方法は?
趣味として、これが可能かどうかを学ぶために、Android 用のシンプルな一人称シューティング ゲームを実装しようとしています。残念ながら、マウス イベントの処理で行き詰まりました。
システム フレームワークによって生成されたオブジェクトonGenericMotion()
を処理する -Listenerが既にあります。MotionEvent
問題は、MotionEvent
マウスによって生成されたオブジェクトには絶対座標が含まれているだけであり、カーソルが画面の端または隅に到達すると「スタック」する傾向があることです。だから私は相対的なマウス座標を考えています。MotionEvent
相対的な動きを提供できる機能は見つかりませんでしたが、
adb shell su -- getevent -lt /dev/input/event3
そして、その出力を調べると、カーソルが画面の隅で動かなくなった場合でも、カーソルを動かそうとすると、カーネルが個別の相対モーション イベントを生成することが明らかになりました。したがって、私のシューターに su アクセスがあるとすれば、相対的な動きを得ることができます。
そしてここで質問です。Google で少し調べてみると、多くのファーストパーソン シューティング ゲームでは、典型的なマウスの動きは
- 相対マウス座標を使用し、
- マウス カーソルを画面の中央に再配置します。
したがって、質問は実際には 2 つあります。
- Androidでマウスカーソルを画面の中央に再配置することはできますか? と
- そうでない場合、相対的なマウスの動きの情報だけを使用して、典型的な「一人称シューティングゲーム」のマウスの動きを実現できますか?
javascript - PointerLockControlsを使用してThree.jsでマウスのヒット検出を行う方法は?
オープンソース プロジェクトを作成しました。これは、Three.js を使用して 3D で書籍を表示するためのデータ ビジュアライザーです。( https://github.com/AlinCiocan/BooksIn3D )。そして今、キーを押した場合にユーザーが本の前にいるかどうかを検出したいと考えています。このようなもの:
たとえば、上の画像では、カーソルの手は本に当たっていません。
実際に関数を機能させるために最善を尽くしましたが、行き詰まっています。PointerLockControls を使用してヒット検出を行う方法について SO に質問があるかどうかを検索しましたが、何も見つかりませんでした。カーソルの手は動かず、常に画面の中央にあると言わざるを得ません。
dart - ダーツ付きポインターロック
Firefox と Chrome で動作するダーツでカーソルをロックする方法はありますか? 私は試した:
マウスダウンイベントリスナーで
私も試しました
renderer は three.dart パッケージの WebGLRenderer です。問題は、これが Chromium でのみ機能することです。次のjsのクロスブラウザソリューションを調べましたが、これはdartでは機能しません。
ダーツでポインターロックを行う方法はありますか、またはダーツから上記の JavaScript を実行する方法を見つける必要がありますか?
javascript - Three.js Pointerlockcontrols y 軸に沿って撮影
現在、three.js と pointerlockcontrols を使用して FPS を開発しています。
以下のコードを使用すると、任意の水平方向に撮影できます。
しかし、私のコードは y 軸を考慮していません。以下の行は、ピッチの回転を保持します。
y 軸に沿って (任意の方向に垂直に) 撮影できるように、この値を適用するにはどうすればよいですか? 現在、弾丸は直線に沿って進んでいます。
よろしくお願いいたします。
webgl - レンダリングされたマウス (WebGL) と WebVR モードでの Pointer Lock 座標の同期
レンダリングされたマウスをポインタ ロック座標と同期させようとしています。ポインター ロックはマウス カーソルを非表示にするため、個別に描画する必要があります。マウス ポインターとしてプリミティブを使用した 3D シーンがあります。ビルボードを使用してマウス カーソルを (0,0, -1) に描画したので、この 3D 空間では 2D オブジェクトのように見えます。
ここまでは順調ですね。ポインターロックベースの x 座標と y 座標を計算するには、これを使用します。
最初の問題は、最初に x 座標と y 座標を設定する方法がわからないことです。VR モードに入ると、カーソルは (0,0, -1) に設定されるため、2D 空間で同期する必要があります。目が2つあるから、幅/2とか幅/4くらいかなと思ったのですが、うまくいきませんでした。さらに、マウスが速すぎるため、レンダリングには正しい加速係数が必要です。やはり幅のあるものだと思います。
javascript - HTML5 ポインター ロック API 使用時の確認ダイアログ ボックス
このデモページを使用してポインターロック APIを試しています。しかし、コードの実行中に、ユーザーがマウス ポインターを非表示にするかどうかを確認するダイアログ ボックスがブラウザーに表示されていることがわかります。ユーザーがシームレスに操作できるように、このダイアログ ボックスがプログラムによって表示されないようにする方法はありますか?
javascript - XUL で画面を超えたマウスムーブ デルタを正しく検出するにはどうすればよいですか?
私が作成したSlyZoom 拡張機能mousedown
では、仮想スライダーを実装したいと考えています。これは、マウス ポインターが on に変化する小さな静的領域として機能する XUL/XBL 要素であり、イベントew-resize
をキャプチャmousemove
して水平方向の動きを検出し、現在のスライダーを変更します。ズームレベル。
これまでのところ、標準のMouseEvent APIを使用し、非常に便利なMouseEvent.mozMovementXを利用して暫定的な解決策を実装しました。これはPointer Lock APIを使用していないときでも存在しているようです。
この例の画像では、(Xubuntu)ew-resize
マウス ポインターが一時的な仮想スライダー (領域) の上にあり、マウス ポインターの後ろに小さな黒い二重矢印があり、 の左側にあります<menulist>
。
この画像の右側が画面の右端です。左側は単純にトリミングされています。
ただし、ご想像のとおり、ユーザーが十分なズーム レベルに達する前に、マウス ポインターが定期的にユーザーの画面の端に到達する可能性が非常に高くなります。そのような場合、残念MouseEvent.mozMovementX
ながら、物理ポインター デバイスがまだ動いていても、 はゼロのままです。
Pointer Lock API を使用して、これを回避しようとしました。ただし、Pointer Lock API は XUL/XBL ドキュメントでは機能しないようです。あれは正しいですか?それとも、Pointer Lock API は XUL/XBL ドキュメントでも機能するはずですか?
いずれにせよ、Pointer Lock APIがXBL 要素に対して機能していたとしても、マウス ポインターが非表示になり、望ましくありません。その場合、偽のマウス ポインターを作成することもできると思いますが、それはかなり面倒で、動作が不安定になりがちです。
だから私の質問はこれに要約されます:
XUL/XBL ドキュメントで画面の端を越えたマウスムーブ デルタを正しく検出するにはどうすればよいですか? どういうわけか、これは可能ですか?