#aframe
Вопрос:
Я перепробовал все способы, которые мог найти в Интернете, чтобы получить фактическое положение объекта после анимации. Вот следующие способы, которые я пробовал:
console.log("getAttribute: " Object.values(el.getAttribute('position'))); console.log("object3D.position: " Object.values(el.object3D.position)); console.log("document.querySelector: " Object.values(document.querySelector('#duck1').object3D.getWorldPosition(new THREE.Vector3()))); console.log("object3D.getWorldPosition(new THREE.Vector3()): " Object.values(el.object3D.getWorldPosition(new THREE.Vector3())));
Во всех методах, используемых выше, я получаю жестко закодированное первичное положение объекта, которому я назначил, а не фактическое положение объекта в пространстве.
Это моя программа. Проверьте журнал консоли!
lt;htmlgt; lt;headgt; lt;meta name="viewport" content="width=device-width, initial-scale=1"gt; lt;script src="https://aframe.io/releases/1.2.0/aframe.min.js"gt;lt;/scriptgt; lt;scriptgt; AFRAME.registerComponent('eventhandling', { tick: function () { var el = this.el; var entity = document.querySelector('#duck1'); el.addEventListener('animationcomplete', function(){ console.log("getAttribute: " Object.values(el.getAttribute('position'))); console.log("object3D.position: " Object.values(el.object3D.position)); console.log("document.querySelector: " Object.values(document.querySelector('#duck1').object3D.getWorldPosition(new THREE.Vector3()))); console.log("object3D.getWorldPosition(new THREE.Vector3()): " Object.values(el.object3D.getWorldPosition(new THREE.Vector3()))); entity.emit('starteventforAnimation'); }); } }); lt;/scriptgt; lt;/headgt; lt;bodygt; lt;a-scenegt; lt;a-entity class="rota" id="duck1" color="#FF0000" scale="0.1 0.1 .1" position="2 0 -7" animation="property: rotation;from: ; to:0 -360 0; loop:true; easing:linear; dur:30000; pauseEvents: mouseenter; resumeEvents: starteventforAnimation " animation__mouseenter="property: rotation;from: ; to:0 360 0; easing:linear; dur:4000; startEvents: mouseenter ;pauseEvents: starteventforAnimation; resumeEvents: mouseenter" eventhandlinggt; lt;a-box class="rota" color="#FF0000" gltf-model="spaceship.glb" position="20 0 -10" scale="2 3 3" collison-check="el: #otherduck; radius: 0.15; other-radius: 0.15;"gt; lt;/a-boxgt; lt;/a-entitygt; lt;a-camera position="0 1.2 1.3"gt;lt;a-cursor objects=".rota" gt;lt;/a-cursorgt;lt;/a-cameragt; lt; lt;/a-scenegt; lt;/bodygt; lt;/htmlgt;
Назначается должность субъекта 2 0 -7
. Даже после нескольких поворотов я получаю одно и то же значение в файле console.log.
Любая идея, как я могу получить фактическое положение объекта в пространстве после того, как анимация произошла в кадре 1.2.0