Qualcuno sa come posso ruotare un CannonJS (la libreria fisica) CANNON.RigidBody
? Sto cercando di far ruotare l'oggetto con la fotocamera, quindi entrambi si trovano nella stessa direzione. So di avere a modificare il quaternione, ma questo non funziona correttamente:Come ruotare un CannonJS RigidBody?
mPlayer.objectBody.quaternion.set(0, mPlayer.yawObject.rotation.y, 0, 1);
cambia anche la posizione Y dell'oggetto, non solo la rotazione.
Here's a demo (WASD per spostare il rettangolo rosso - che è quello che voglio far ruotare)
Here's the main script
Al momento ruota automaticamente basato sulla fisica. Grazie per l'aiuto!
EDIT:
ho sorta di capito di lavoro ora. Ma non ruota completamente (l'intero 360 gradi) e l'angolo che ruota non è del tutto corretto. Se qualcuno potesse dare un'occhiata e vedere cosa non va, lo apprezzerei davvero! :)
Same link as before ma il rettangolo/il corpo è sotto la telecamera ora, quindi posso vedere se sta ruotando correttamente.
ho aggiunto questo codice per farlo ruotare:
mPlayer.objectBody.quaternion.y = mPlayer.yawObject.rotation.y;
mPlayer.objectBody.quaternion.w = 1;
mPlayer.objectBody.quaternion.normalize();
Per risparmiare guardando attraverso il codice, mPlayer.yawObject.rotation.y
sorge nel MouseMove:
var onMouseMove = function (event) {
var movementX = event.movementX || event.mozMovementX || event.webkitMovementX || 0;
var movementY = event.movementY || event.mozMovementY || event.webkitMovementY || 0;
mPlayer.yawObject.rotation.y -= movementX * 0.002;
mPlayer.pitchObject.rotation.x -= movementY * 0.002;
mPlayer.pitchObject.rotation.x = Math.max(- PI_2, Math.min(PI_2, mPlayer.pitchObject.rotation.x));
};
Grazie ancora!