Tôi đang tạo một platformer và đã triển khai phát hiện va chạm trên mỗi pixel. Tuy nhiên, điều này đã gây ra 2 trở ngại mà tôi chưa tìm ra. Trở ngại đầu tiên, mà câu hỏi này là, là tôi không biết cách tìm ra điểm tác động một cách hiệu quả (vấn đề khác của tôi có lẽ sẽ là một câu hỏi khác trên StackExchange này).
Tôi có nhân vật của mình rơi hoặc nhảy với tốc độ nhất định bằng pixel. Nghĩa là, mỗi khung hình nhân vật có thể rơi 4 pixel hoặc nhảy 4 pixel chẳng hạn. Nếu nhân vật ngã và giao nhau với một đối tượng thì nhân vật sẽ đáp xuống đối tượng đó (và ngược lại, nếu họ nhảy và đánh một đối tượng thì họ sẽ bắt đầu ngã lại). Tuy nhiên, nếu, chẳng hạn, một ký tự rơi 4 pixel và điều này đặt chúng 3 pixel vào một đối tượng, chúng sẽ ngừng rơi nhưng sẽ không ở vị trí thích hợp. Nhân vật sẽ xuất hiện dừng lại ở điểm ảnh hưởng đầu tiên.
Vì vậy, làm thế nào tôi có thể tìm thấy điểm tác động một cách hiệu quả? Tôi chỉ có một ý tưởng mơ hồ là chỉ so sánh các pixel phác thảo, kiểm tra sự va chạm và tăng chúng lên hoặc xuống cho đến khi có một vụ va chạm, nhưng có vẻ như nó có thể phức tạp để tháo gỡ.
Nếu bạn muốn biết nền tảng này, tôi đang phát triển bằng XNA cho Windows Phone 7.