Ich denke, Ihre Implementierung setzt voraus, dass der Schallpegel in einer Zelle kumulativ ist und dass sich die Amplitude einfach gleichmäßig nach außen in alle Richtungen bewegt. Der Ton breitet sich nicht Bild für Bild aus, er wird entweder abgespielt oder nicht, und Sie möchten die Amplitude herausfinden, mit der er für einen bestimmten Punkt abgespielt werden soll.
Raycasting durch die Kacheln ist eine Möglichkeit (und wahrscheinlich die effektivste), dies zu tun. Zeichnen Sie einfach eine Linie zwischen Sender und Empfänger und subtrahieren Sie den Dämpfungswert jeder Zelle auf dem Weg. Wenn die Zahl positiv ist, spielen Sie den Ton ab.
Wenn Sie indirekten Sound modellieren möchten, müssen Sie den Pfad finden. Behandeln Sie den Emitter als Wurzel Ihres Baums und modellieren Sie jede benachbarte Zelle als verknüpften Knoten. Jeder Link hat Kosten, die vom aktuellen Volumen abgezogen werden. Fahren Sie so lange durch das Diagramm, bis Sie entweder den Empfänger finden oder Ihre Lautstärke unter Null fällt (wenn dies der Fall ist, gehen Sie zurück und versuchen Sie es mit einem anderen Pfad). Wenn es keine Pfade zum Empfänger mit positiver Lautstärke gibt, ist Ihr Sender nicht zu hören. NB: Sie können das Durchlaufen nicht einfach aufgeben, wenn Sie den Empfänger finden, da es möglicherweise mehrere Pfade vom Sender zum Empfänger gibt und Sie den mit der höchsten Lautstärke benötigen.
Wenn Sie eine KI modellieren, die sich darum kümmert, woher der Ton kommt, hilft der letztere Ansatz - eine KI würde den Ton aus der Richtung des letzten Segments auf dem Pfad "hören". Wenn es zwei hörbare Pfade zum Empfänger gibt, kann die KI verwirrt sein über die verschiedenen Geräusche und die Richtung, in die sie gehen sollen.