Có ai biết cách tôi có thể xoay CannonJS (thư viện vật lý) CANNON.RigidBody
không? Tôi đang cố gắng làm cho đối tượng xoay với máy ảnh, vì vậy cả hai đều hướng về cùng một hướng. Tôi biết tôi phải thay đổi các quaternion, nhưng điều này không làm việc một cách chính xác:Làm thế nào để xoay CannonJS RigidBody?
mPlayer.objectBody.quaternion.set(0, mPlayer.yawObject.rotation.y, 0, 1);
Nó cũng làm thay đổi Y-vị trí của các đối tượng, không chỉ xoay.
Here's a demo (WASD để di chuyển hình chữ nhật màu đỏ - đó là những gì tôi muốn xoay)
Here's the main script
Tại thời điểm nó sẽ tự động xoay dựa trên vật lý. Cảm ơn đã giúp đỡ!
CHỈNH SỬA:
Tôi sắp làm việc này ngay bây giờ. Nhưng nó không xoay hoàn toàn (toàn bộ 360 độ) và góc quay nó không hoàn toàn đúng. Nếu ai đó có thể xem và xem điều gì sai, tôi thực sự sẽ đánh giá cao nó! :)
Same link as before nhưng hình chữ nhật/cơ thể ở dưới máy ảnh ngay bây giờ, vì vậy tôi có thể biết nếu nó xoay đúng cách.
tôi đã thêm mã này để làm cho nó xoay:
mPlayer.objectBody.quaternion.y = mPlayer.yawObject.rotation.y;
mPlayer.objectBody.quaternion.w = 1;
mPlayer.objectBody.quaternion.normalize();
Để lưu Bạn đang tìm kiếm thông qua các mã, mPlayer.yawObject.rotation.y
được đặt trong sự kiện 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));
};
Cảm ơn một lần nữa!