1

A-Frame コントロール アンビエント ライティングで壁にライト スイッチを作成しようとしています。

シーンに実際のライトを配置して名前を付け、javascript を使用して変更を加えました。

ゲーム コントローラーの gamepadbuttondown:0 (または 5) を onClick イベントとして登録できなかったため、スイッチ自体の a-entity にアニメーションを追加し、イベント リスナーを起動して、変化します。

実際のマウスとプログラムされた onClick イベントを備えたデスクトップ PC ではすべてが機能しますが、5 ドルの安価な Mocute コントローラーを備えた VR ヘッドマウントで電話を試すと、行き詰まります。

                <a-entity id="lightswitch" onclick="WorksFineOnPC();" >
                <a-box geometry="height:4.5; depth:4.5; width:.25" position="143 48 14" material="src:https://www.myWebsite/pic.jpg;">
                    <a-animation id="LightAnimation" attribute="rotation" to="0 360 0" dur="100" begin="gamepadbuttondown:0"></a-animation>
                </a-box>
            </a-entity>

「gamepadbuttondown:0」を「クリック」に置き換えると、PC では問題なく動作しますが、onClick 関数は最初は問題なく動作し、リモコンで制御することはできません。

次の例のように、gamepadbuttondown:0 はサウンドに対して正常に機能します。

<a-entity gamepad-controls
      sound="src: pew-pew.wav;
             on: gamepadbuttondown:7">

このコントローラーやその他のコントローラーで問題なく動作したため、エラーはアニメーショントリガーイベントのどこかにあります。

アニメーションが機能するようになったら、アニメーションを 100 ミリ秒ではなく 1 ミリ秒に短縮する予定です。イベントを開始する方法としてのみ含めたので、イベントリスナーを使用して、「animationend」がいつ発生したかを確認できました。そして、ユーザーには見えないようにします。

空のアニメーションを使用してみましたが、タイプと方向を省略した場合、ボックスのレンダリングに失敗しました。

実際のマウスを使用する代わりに、ボタン[x]を使用してコントローラーからonclickイベントをトリガーする方法を誰かが知っている場合、可能であればアニメーションを完全にスキップしたいと思います。おそらくレイキャスターソリューションはありますか?内部で Three.js に直接アクセスしていますか?

4

2 に答える 2