Tôi khá mới với C ++ và DirectX9 và tôi muốn triển khai Máy ảnh Người thứ ba. Sau khi đọc một số máy ảnh dựa trên Quancyion, tôi quyết định thử triển khai nó. Nhưng nó thực sự làm tôi suy nghĩ, vì vậy tôi hỏi ở đây cách dễ nhất để triển khai TP-Camera là gì?
Dưới đây là những điều mà Camera nên làm:
Theo dõi tọa độ được lưu trữ trong 3DVector (x, y, z)
Xoay quanh đối tượng (Mịn)
Có thể một số loại 'lò xo' = Di chuyển chậm về Pos bình thường phía sau Vật thể sau khi Xoay
Xin lỗi vì tiếng Anh không tốt của tôi: Tôi là người Đức và vẫn còn đi học!
Cảm ơn trước!
BIÊN TẬP:
Sau khi thử, tôi đã hiểu.
Vấn đề lớn nhất mà tôi đã xem xét là việc trích xuất đúng "Vector" hướng từ Ma trận Thế giới.
Trong quá trình nghiên cứu của tôi, tôi đã tìm thấy hầu hết những thứ như thế này:
D3DXVECTOR3 direction;
direction.x = worldMatrix->_13;
direction.y = worldMatrix->_23;
direction.z = worldMatrix->_33;
D3DXVec3Normalize(&direction, &direction);
Điều đó KHÔNG làm việc cho tôi! Thay vào đó tôi đã làm điều này:
D3DXVECTOR3 direction;
direction.x = worldMatrix->_13;
// Consider the .y after the .z!
direction.z = worldMatrix->_23;
direction.y = worldMatrix->_33;
D3DXVec3Normalize(&direction, &direction);
Để nhân rộng:
// The tenfold of the average distance
D3DXVec3Scale(&direction, &direction, 10.0f);
Đặt vị trí:
cameraPos = targetPos - direction;
// For a top-view
cameraPos.y = targetPos.y + 5;
Đối với Xoay, bạn nên tạo Ma trận thế giới tạm thời (từ vị trí của mục tiêu) và xoay theo cách bạn muốn và trích xuất hướng.
The Smoothing of the Rotation thực sự phụ thuộc vào trò chơi CỦA BẠN!
Loại máy ảnh người thứ 3 này thực sự dễ làm và nó hoạt động được!
Thực sự TUYỆT VỜI nhờ "jheriko", người đã cho tôi câu trả lời đúng!