ドラッグするオブジェクトがあるa-scene
を作成しました。最終的な目的はちょうどaframe-click-drag-componentの機能です。残念ながら、このコンポーネントはA-Frameの最新バージョンと互換性がありません。画面座標をシーン座標に変換する方法
私はカスタムコンポーネントを作成しました。私はドラッグ可能なオブジェクト上mouseenter
とmouseleave
イベントを取得し、マウスの位置は、ユーザーがオブジェクトを選択することができたときに検出することができるようにaframe-mouse-cursor-componentを使用
AFRAME.registerComponent('draggable', {
init: function() {
/* Some code */
}
});
。
document.body.addEventListener('mousedown', function (e) {
// start dragging
});
私は継続的にmousemove
が発生したときにマウスの位置を更新するために、グローバル変数を更新:
document.addEventListener('DOMContentLoaded', function() {
document.body.addEventListener('mousemove', function (e) {
window.mouseX = e.clientX;
window.mouseY = e.clientY;
});
});
この方法では、ドラッグを開始したときに
は、私が知っているdocument.body
にEventListener
を追加しましたドラッグ中にマウスの位置を簡単に取得できます。しかし、クライアント上のマウスの位置をバーチャルリアリティの位置に変換する方法はわかりません(可能にする2Dプランに制限されています)。
a-camera
の中央のカーソルから来るレイキャスターを使用してこの問題を解決しましたが、mouse-cursor
のオブジェクトをドラッグしたいので、このコンポーネントにはレイキャスターがありません。
また、マウス座標をカメラとの相対的な座標に変換するためにいくつかの数式を使用しようとしましたが、成功することはありません(本質的に画面のサイズが異なるためです)。
どのような解決策がありますか?クリックドラッグやマウスカーソルを更新したいのですが、THREE.jsの知識はありません。