Tôi nghĩ rằng việc thực hiện của bạn giả định rằng mức âm thanh trong một ô được tích lũy và biên độ chỉ đơn giản là di chuyển ra ngoài theo mọi hướng. Âm thanh không phát ra, từng khung hình, nó phát hoặc không, và bạn muốn tìm ra biên độ để phát nó ở bất kỳ điểm nào.
Raycasting thông qua các gạch là một cách (và có lẽ là cách hiệu quả nhất) để làm điều đó. Chỉ cần vẽ một đường thẳng giữa bộ phát và bộ thu và trừ đi giá trị giảm dần của mỗi ô trên đường đi. Nếu số dương, bạn phát âm thanh.
Nếu bạn muốn mô hình hóa âm thanh gián tiếp, thì bạn sẽ phải tìm đường dẫn. Hãy coi bộ phát là gốc của cây của bạn và mô hình hóa từng ô liền kề như một nút được liên kết. Mỗi liên kết có một chi phí, được trừ vào khối lượng hiện tại. Tiếp tục di chuyển qua biểu đồ cho đến khi bạn tìm thấy máy thu hoặc âm lượng của bạn giảm xuống dưới 0 (nếu có, quay lại và thử đường dẫn khác). Nếu không có đường dẫn đến máy thu có âm lượng dương, bộ phát của bạn không thể được nghe thấy. Lưu ý: bạn không thể từ bỏ di chuyển ngang khi tìm thấy máy thu, bởi vì có thể có nhiều đường dẫn từ bộ phát đến bộ thu và bạn cần một đường dẫn có âm lượng cao nhất.
Nếu bạn đang mô hình hóa AI quan tâm đến việc âm thanh phát ra từ đâu, cách tiếp cận sau sẽ có ích - một AI sẽ là 'nghe' âm thanh đến từ hướng của đoạn cuối cùng trên đường đi. Đặc biệt, nếu có hai đường dẫn âm thanh đến máy thu, AI có thể bị nhầm lẫn về nhiều âm thanh và hướng đi nào.