Czy ktoś wie, jak mogę obrócić CannonJS (biblioteka fizyki) CANNON.RigidBody
? Próbuję obrócić obiekt za pomocą kamery, więc oba są zwrócone w tym samym kierunku. Wiem, że trzeba zmodyfikować kwaternion, ale to nie działa prawidłowo:Jak obrócić urządzenie CannonJS RigidBody?
mPlayer.objectBody.quaternion.set(0, mPlayer.yawObject.rotation.y, 0, 1);
Zmienia się również Y położenia obiektu, a nie tylko obrotu.
Here's a demo (WASD przenieść czerwony prostokąt - czyli to, co chcę, aby obrócić)
Here's the main script
W tej chwili automatycznie obraca opartej na fizyce. Dzięki za pomoc!
EDYTOWANIE:
Mam coś teraz działa. Ale nie obraca się całkowicie (całe 360 stopni), a kąt, pod którym obraca się, nie jest właściwy. Gdyby ktoś mógł rzucić okiem i zobaczyć, co jest nie tak, byłbym bardzo wdzięczny! :)
Same link as before, ale prostokąt/bryła znajduje się teraz pod kamerą, więc mogę sprawdzić, czy obraca się prawidłowo.
dodałem ten kod, aby go obrócić:
mPlayer.objectBody.quaternion.y = mPlayer.yawObject.rotation.y;
mPlayer.objectBody.quaternion.w = 1;
mPlayer.objectBody.quaternion.normalize();
Aby zaoszczędzić pominie kodu mPlayer.yawObject.rotation.y
jest ustawiony w przypadku 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));
};
Dzięki jeszcze raz!