J'essaye d'ajuster seulement la coordonnée Y d'un objet, tout en gardant les mêmes coordonnées X et Z. La seule méthode que je travaille est d'aller chercher la position de l'objet et de composer une nouvelle position partiellement modifiée. Ce n'est pas joli, et il semble que ce pourrait être inefficace. On dirait que cela peut être dû au fait que position is a single-property component, alors peut-être que ce n'est pas possible.Comment définir certaines coordonnées d'un objet sans réinitialiser les autres?
Voilà ma solution actuelle:
https://glitch.com/edit/#!/aframe-position-example
index.html:
<html>
<head>
<script src="https://aframe.io/releases/0.6.0/aframe.min.js"></script>
</head>
<body>
<a-scene>
<a-camera id="camera"></a-camera>
</a-scene>
<script src="index.js"></script>
</body>
</html>
index.js:
const camera = document.querySelector('#camera')
console.log(camera.getAttribute('position'))
// {x: 0, y: 1.6, z: 0}
// overwrites original position, as expected
camera.setAttribute('position', { x: 0, y: 0, z: 5 })
console.log(camera.getAttribute('position'))
// {x: 0, y: 0, z: 5}
// overwrites original position (including z, defaults to 0), maybe not expected
camera.setAttribute('position', { x: 5, y: 5 })
console.log(camera.getAttribute('position'))
// {x: 5, y: 5, z: 0}
// overwrites original position (x and z become 0), maybe not expected
camera.setAttribute('position', 'y', 10)
console.log(camera.getAttribute('position'))
// {x: 0, y: 10, z: 0}
// how to change some position variables and keep the other ones the same
let oldPos = camera.getAttribute('position')
let newPos = { x: 4, y: oldPos.y, z: oldPos.z }
camera.setAttribute('position', newPos)
console.log(camera.getAttribute('position'))
// {x: 4, y: 10, z: 0}
Ne changera-t-il pas la position sous-jacente de Three.js par la suite? Si je fais 'getAttribute ('position')' sur la boîte, ne sera-ce pas l'ancienne position? Et la deuxième solution est ce que je suis en train de faire, qui semble être le seul moyen. – boxtrain
@jbjw yup, comme je l'ai écrit, j'utilise généralement l'option 'variable temporaire' pour garder les choses en place, j'ai mis à jour mon anwser pour éviter toute confusion, si vous cherchez un propre un revêtement, utilisez l'idée de Rainers, souhaite toujours avoir l'objet de position dans son ensemble dans une référence. –