Làm thế nào để phát hiện va chạm với các vật thể không phải hình chữ nhật trong các trò chơi 2D?


7

Phát hiện va chạm với các vật thể hình chữ nhật khá dễ dàng. Tôi có thể viết các trò chơi dựa trên gạch đơn giản. Bây giờ tôi muốn học cách viết các trò chơi không dựa trên gạch trong đó các đối tượng có thể không phải là hình chữ nhật, ví dụ, một ngọn núi.

Giả sử tôi muốn một địa hình không bằng phẳng với đồi núi làm thế nào để tôi lưu trữ hình dạng của địa hình? Ngoài ra làm thế nào để tôi phát hiện các va chạm cho các đối tượng không đồng đều như vậy?


Bạn có thể thấy câu hỏi này và câu trả lời của nó hữu ích: gamedev.stackexchange.com/questions/71800/iêu
async

Câu trả lời:


3

Bạn có thể làm một số cách:

Một trong số đó là sử dụng thử nghiệm va chạm thô bằng cách sử dụng va chạm hộp giới hạn (tương tự như những gì bạn đã làm) sau đó nếu vượt qua, hãy thực hiện kiểm tra va chạm tốt bằng cách sử dụng phát hiện pixel hoàn hảo.

Một cách khác có thể là sử dụng các hình dạng giới hạn nhưng chỉ có chúng bao quanh khu vực mà bạn muốn có khả năng va chạm, tức là một hitbox và thực hiện phát hiện giao lộ.


2
Làm thế nào để thực hiện kiểm tra va chạm tốt bằng cách sử dụng phát hiện pixel hoàn hảo?
Cracker

0

Hình dạng địa hình thường được lưu trữ dưới dạng mảng, vì vậy được gọi là "heightmap":

height[X][Y]

Bạn có thể làm mịn hoặc tạo một số chi tiết fractal trên nó (thường là khi kích thước của mảng nhỏ).

Đừng va chạm bằng tay, Bạn có thể gặp vấn đề với tốc độ, sự xâm nhập ...

Sử dụng đa giác lồi Box2D cho sidecrollers (Trái đất được ghi). Đối với các game nhập vai đỉnh cao như các trò chơi ODE, Havok, Newton , Bullet ... dường như có hỗ trợ cho các bản đồ chiều cao, đôi khi thậm chí là nguyên bản.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.