2016-03-29 17 views
1

私は非常に基本的なAフレームのシーンで遊んでいます。 実行時にカメラの位置を取得するための情報を探しています。 Componentとthree.jsコードを使用する必要がありますか?ランタイム時のカメラの位置

どうすればいいですか?

+0

私はRTFMを持っています。しかし、私はどこから始めるのか分かりません。私が「実行時に」と言うときは、カメラが動くたびに意味します。 – pizaninja

+0

私はあなたがこれまでに試した*コード*を意味しましたか? –

+0

例を挙げることはできますか? codepenへのリンクは、http://codepen.io/team/mozvr/ –

答えて

1

まず、カメラエンティティ(https://aframe.io/docs/core/entity.html#Retrieving-an-Entity)をつかんでください。カメラエンティティは、cameraコンポーネントをHTML属性として添付します。

document.querySelector('[camera]')又は

document.querySelector('a-scene').camera.elそして位置をつかむためにgetAttributeを使用します。これは{X、Y、Z}オブジェクトを返します。

document.querySelector('[camera]').getAttribute('position')

毎回が通知されるようにカメラがその位置を更新し、我々はcomponentchangedイベント(https://aframe.io/docs/core/entity.html#Listening-for-Component-Changes)を使用することができます。

document.querySelector('[camera]').addEventListener('componentchanged', function (evt) { 
    if (evt.detail.name === 'position') { 
    console.log('Camera position went from', evt.detail.oldData, 'to', evt.detail.newData); 
    } 
}); 
+0

'evt.name'は未定義のままです:-( – pizaninja

+0

固定、それは' evt.detail.name' 。 – ngokevin

+0

'evt.detail.name'は未定義です。 FYI、' console.log(JSON.stringify(evt)) 'ディスプレイ: ' {"isTrusted":false} ' – pizaninja

0

私は最終的にこのソリューション採用している:

<script> 
    AFRAME.registerComponent('acceleration', { 
     tick: function() { 
      var altitude = (this.el.getAttribute('position').z); 
     } 
    }) 
</script> 
<a-scene> 
    <a-entity position="0 0 150"> 
     <a-entity id="myCamera" camera acceleration look-controls keyboard-controls></a-entity> 
    </a-entity> 
</a-scene> 

私の最後の問題は、カメラの絶対座標は得られませんが、カメラ位置を初期化する。

関連する問題