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 に直接アクセスしていますか?