Tôi có trò chơi dựa trên lưới (platformer), nơi tôi đã dựa trên mọi thứ trên các ô xếp. Tôi có gạch cứng và lỏng. Tôi đang cố gắng tìm một cách tốt để làm cho gạch nước mô phỏng nước một cách thô ráp.Mô hình nước/lưới lỏng 2D (nền tảng gạch nền tảng)
Hiện tại tôi có hệ thống hiện tại: Khi gạch nước được thêm vào trên một ô nước khác, nó sẽ thêm 1 vào ô nước bên dưới. Con số chỉ ra áp lực.
Sau đây là cách nó trông giống như tại thời điểm này:
[0] <- This water tile has 0 in pressure.
[1] <- This water tile has 1 in pressure.
nếu tôi thêm một gạch nước bên cạnh đáy một, nó tìm kiếm từ trái, phải và trên nếu có bất kỳ gạch nước và inheritates lớn nhất áp lực xung quanh nó.
Ví dụ:
[0]
[1][1]
Và đây là một ví dụ lớn hơn sau khi thêm vài gạch nước:
[0][0]
[1][1][1][1]
[2][2][2][2][2]
Sau đó, tôi làm cho mỗi ngói nước có áp lực đó là bằng hoặc lớn hơn 1 cố gắng để di chuyển trái/phải nếu có không gian trống, sau đó đặt áp lực về 0 và kiểm tra xem nó có thể thừa hưởng áp lực xung quanh bản thân từ gạch nước láng giềng không nếu có.
Hệ thống này hoạt động rất tốt, ngoại trừ trường hợp gạch nước được lấy ra từ trên cùng.
Nếu tôi loại bỏ các gạch nước đầu từ ví dụ cuối cùng:
[1][1][1][1]
[2][2][2][2][2]
Sau đó, chúng tôi có hàng hàng đầu với áp lực 1, cần có 0 hiện nay và hàng dưới cùng nên có 1.
Có một số hệ thống thông minh hơn mà tôi có thể triển khai để thực hiện điều này đúng hơn không?
Dưới đây là các hạn chế:
Mỗi ô chỉ có thể kiểm tra các ô lân cận. Ngói có thể có bất kỳ chức năng nào được xác định. Ngói có thể có bất kỳ biến nào để lưu trữ dữ liệu.
Các bạn có thể tìm ra một hệ thống tốt hơn hoạt động tốt hơn hệ thống của tôi không?
Các trường hợp kiểm tra thường lệ tôi làm là:
[]
[] should become [][]
[]
[]
[] should become [][][]
[]
[][][] should become [][][][]
Giả sử các trò chơi chạy một thời gian.
Mọi đề xuất sẽ được hoan nghênh hơn!