Làm cách nào tôi có thể đảm bảo trường đối xứng trong Roguelike?


10

Tôi đang làm việc trên một Roguelike, và với nó, tôi đã tạo ra một thuật toán quan sát trường theo dõi / chiếu tia (foV) bao gồm việc vẽ các đường Bresenham tới mọi điểm trong một vòng tròn rắn. Nó được tạo ra miễn phí (và hiệu quả hợp lý), nhưng nó thiếu một yêu cầu quan trọng của tôi: tính đối xứng (nếu bạn có thể nhìn thấy một con quái vật, nó cũng phải có thể nhìn thấy bạn).

nhập mô tả hình ảnh ở đây

Đây là một ví dụ về hành vi không đối xứng của mã của tôi. Trong ảnh bên trái, tôi đang đứng ở một góc (khối 'X' màu đỏ = tường). Tôi có thể thấy các ô bên phải trên cùng. Tuy nhiên, nếu tôi di chuyển đến một trong những ô đó (ảnh phải), tôi không còn có thể nhìn thấy ô mà tôi đến từ đó.

Tôi nghĩ rằng tôi có thể theo một dạng của Trường nhìn cho phép , nhưng chỉ vì bài viết của Roguebasin cho rằng nó được phép đối xứng. Có phương tiện thay thế để có được sự đối xứng?


1
Chỉ cần đảm bảo điểm mắt ở cùng vị trí với vị trí bạn đang chiếu tia tới khi kiểm tra mức độ hiển thị.
MichaelHouse

Câu trả lời:


8

Có vẻ như bạn bao gồm một hình vuông khi bạn có thể nhìn thấy bất kỳ điểm nào trong đó trong khi mắt ở điểm cố định duy nhất.

Tuy nhiên, bạn chỉ nên bao gồm một hình vuông khi bạn có thể nhìn thấy phần giữa của nó (giả sử "mắt" cũng ở giữa). Hoặc bạn có thể vẽ các tia từ mỗi góc của hình vuông bắt đầu đến các góc của hình vuông được thử, nếu bạn có thể nhìn thấy bất kỳ từ bất kỳ thì bao gồm.

Điểm mấu chốt là hitbox của hình vuông cũng phải là tất cả các vị trí mà mắt phải ở.

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.