Tôi đang tạo một trò chơi mà bạn sử dụng điều khiển từ xa quay (chỉ biết vòng quay của nó) để lái xe. Tôi có một vấn đề với chuyển đổi Quaternion
(đây là đầu ra của bộ điều khiển) để xoay bánh lái. Đây là hình thức làm việc gần nhất với tất cả những thứ mà tôi đã thử (transform.localRotation là vòng quay của vô-lăng):Làm thế nào để chuyển đổi quaternion xoay để chuyển động tay lái?
void Update() {
transform.localRotation = GvrController.Orientation;
transform.localRotation = new Quaternion(0.0f, 0.0f, transform.localRotation.z, transform.localRotation.w);
}
Đây rõ ràng không phải là giải pháp tốt và hoạt động không tốt. Có một hình ảnh rất đơn giản về những gì tôi đang cố gắng làm: Định hướng mặc định của bộ điều khiển hướng về phía trước như trên hình ảnh.
Về cơ bản, toàn bộ vấn đề là cách bỏ qua tất cả các trục khác với trục chịu trách nhiệm quay (trục 1 trên hình ảnh) và áp dụng nó vào vô-lăng. Bạn có biết làm thế nào tôi có thể làm điều này?
EDIT: Bởi vì thật khó để giải thích vấn đề mà không trực quan hóa tôi chụp ảnh bộ điều khiển của mình và vẽ trục lên chúng.
Đây là định hướng mặc định của điều khiển:
Và đây là cách nó được tổ chức với trục đánh dấu vào nó:
Nó có lẽ sẽ giúp ích nếu bạn đưa ra một số đầu vào và đầu ra mong đợi để hiểu rõ hơn về vòng xoay mà bộ điều khiển mang lại cho bạn. – FINDarkside
Vâng đây là những khó chịu để gỡ lỗi. Tôi khuyên bạn nên chạy thử chạy thử với góc đầu ra mong muốn đã biết, sau đó bạn có thể "đảo ngược" công thức chính xác trong bất kỳ môi trường lập trình nào như Matlab hoặc Python Spyder và sau đó chuyển nó sang ngôn ngữ/khung mong muốn. – NikoNyrh
Bạn có thể vui lòng cung cấp cho chúng tôi bản ghi có chuyển đổi Euler không? –