Tôi đã bị lừa khi di chuyển trên các gạch dốc trong XNA và nó đang hoạt động nhưng không hoàn toàn thỏa đáng. Tôi cũng đã nghĩ rằng việc có những bộ dốc được xác định trước có thể không cho tôi địa hình trông đủ "hữu cơ". Ngoài ra còn có vấn đề phải xây dựng một số loại gạch khác nhau cho mỗi độ dốc khi chúng bị xích lại với nhau (chỉ gạch 45 độ sẽ xâu chuỗi hoàn hảo như tôi hiểu).
Tôi đã nghĩ đến việc bằng cách nào đó quét các chuỗi gạch dốc được kết nối và coi nó như một hình tam giác lớn mới, vì tôi gặp khó khăn khi bị trục trặc ở các cạnh nơi gạch dốc kết nối. Nhưng, điều này dẫn đến vấn đề hạn chế độ cong của địa hình.
Vì vậy, ... những gì tôi muốn làm bây giờ là tạo một hình ảnh hoặc kết cấu đơn giản về địa hình của một cấp độ (hoặc phần của cấp độ) và tạo một sơ đồ chiều cao đơn giản (của Y cho mỗi X) cho địa hình. Vị trí Y của người chơi sau đó sẽ được cập nhật dựa trên vị trí X của họ.
Có một cách đơn giản để làm điều này (hoặc một cách tốt hơn để giải quyết vấn đề này)? Vấn đề chính tôi có thể thấy với phương pháp này là trường hợp có những khu vực trên mặt đất có thể đi được. Có lẽ có một cách để chỉ bản đồ tất cả các khu vực mặt đất có thể đi bộ?
Tôi đã xem xét đoạn mã hữu ích này: http://thirdpartyninjas.com/blog/2010/07/28/sloped-pl platform-collision / nhưng cần một cách để tạo các điểm / vectơ thực tế.
EDIT: Tôi đã thử tạo trước các đường dốc bằng cách sử dụng liên kết tôi đã đăng nhưng bây giờ tôi tin rằng tôi nên sử dụng xung đột trên mỗi pixel như bạn đề xuất. Tôi đã xem ví dụ tại: http://create.msdn.com/en-US/education/catalog/tutorial/collision_2d_perpixel và đang cố gắng tìm ra cách điều chỉnh sprite sau khi phát hiện va chạm. Như David đề xuất, tôi đã tạo ra một vài điểm cảm biến (chân, hai bên, trung tâm dưới cùng, v.v.) và có thể dễ dàng phát hiện khi những điểm này thực sự va chạm với các phần không trong suốt của kết cấu thứ hai (độ dốc đơn giản). Tôi gặp rắc rối với thuật toán về cách tôi thực sự điều chỉnh vị trí sprite dựa trên va chạm.
Nói rằng tôi phát hiện một vụ va chạm với độ dốc ở chân phải của sprite. Làm cách nào tôi có thể quét dữ liệu kết cấu độ dốc để tìm vị trí Y để đặt chân của sprite để nó không còn bên trong độ dốc? Cách nó được lưu trữ dưới dạng mảng 1D trong ví dụ hơi khó hiểu, tôi có nên cố gắng lưu trữ dữ liệu dưới dạng mảng 2D không?
Tôi cũng nhận thấy một số người đề cập rằng tốt nhất nên tách kiểm tra va chạm theo chiều ngang và chiều dọc, tại sao lại chính xác như vậy?