Tôi đang làm việc trên một trò chơi đua xe cho một dự án trường học. Sử dụng Visual studio 10 pro và Irrlicht. Xin lỗi vì ngữ pháp xấu>.> Và câu hỏi đầu tiên của tôi là không chắc chắn nếu nó được thực hiện đúng.Làm cách nào để tìm một đối tượng trước hoặc sau điểm tham chiếu?
Cách tôi muốn nó hoạt động là tôi tạo điểm tham chiếu tại các điểm khác nhau trên đường ray, và sau đó tôi chạy kiểm tra điểm tham chiếu để xem xe có vượt quá điểm tiếp theo hay không (tiếp theo "cần" để đi qua), nếu có thì nó cập nhật điểm tham chiếu tiếp theo, không có gì khác.
Cách tôi hy vọng điều này sẽ hiệu quả, tôi tạo một vectơ từ n đến n + 1, sau đó tìm vectơ vuông góc với vectơ đầu tiên tại n. Sau đó, tôi thấy nếu đối tượng ở phía trước hoặc phía sau vector đó. Tôi tìm thấy một Gamedev.net forumpost đã giúp tôi thực hiện chức năng này:
void Engine::checkWaypoint(Vehicle* vehicle)
{
btVector3 vector = waypoints[vehicle->nextWaypoint];
// n
btVector3 nextVector = waypoints[vehicle->nextWaypoint + 1];
// n+1
vector = nextVector - vector;
// First vector
btVector3 pos = btVector3(vehicle->position.X,vehicle->position.Y,vehicle->position.Z);
float product = vector.dot(pos - waypoints[vehicle->nextWaypoint]);
// positiv = before, negative = behind
if(product < 0)
vehicle->nextWaypoint += 1;
}
lỗi hiện tại với điều này là:
cập nhật các nextwaypoint hơn sau đó những người mà không đi qua một điểm mới.
Khi kết thúc và đặt lại, nó dừng kích hoạt trên các điểm tham chiếu đầu tiên.
Vì vậy, câu hỏi của tôi:
Đây có phải là một cách tốt để làm điều này?
Tôi đã làm đúng chưa?
Bạn nên [chấp nhận câu trả lời] (http://stackoverflow.com/faq#howtoask) hoặc nhận xét các câu trả lời được đưa ra nếu không có câu nào thuyết phục bạn, để có được câu trả lời tốt hơn. – Synxis