Oh, es regnet heute schon den ganzen Tag über, da sollten die Ideen eigentlich nur so fließen.
Du musst zu erst mal beschließen, wie genau du den Regen, also was alles und am Ende wie alles, darstellen möchtest.
Genügen dir ein paar Streifen auf der Leinwand oder möchtest du ebenso das Aufprallen der Regentropfen an bestimmten Oberflächen simulieren.
Die technische Geschichte hängt voll und ganz von deiner eigenen Programmarchitektur ab und wie du sonst alles berechnest. D. h. man könnte gewisse Berechnungen an das Pathfinding etc. anhängen, wenn (nur eine Möglichkeit) geprüft wird, ob der Charakter eine gewisse Fläche betritt oder nicht.
Wie du herausbekommst, ob du im Regen stehst oder nicht? Ganz einfach, schieße einen Strahl geradewegs nach oben. Keine Objekte über dir -> Regen wird global simuliert.
Objekt wird geschnitten -> Prüfen welches Objekt -> vom Objekt bis zum Charakter möglicherweise an der Boundingbox entlang Planes erstellen (wenn nicht schon vorher erstellt) und als Textur "Regen" einsetzen. Diese Möglichkeit wäre mehr für das Freie geeignet. Bei Häusern kannst du für die Glasscheiben einfach einen Pixel-Shader hinzufügen, wenn du im Haus bist oder eben das anwenden, was ich einen Satz weiter oben erzählt habe.
Ein Patentrezept findest du für solche Dinge nicht, das dürfte klar sein, aber gute Ansätze gibt es immer. Du musst bestimmen, welche Möglichkeiten dein Spiel überhaupt zulässt. Was nämlich nie vorkommen kann, brauchst du nicht zu berechnen oder abfragen. Jedenfalls würde ich zwischen Indoor und Outdoor unterscheiden, anders wirst du es wohl nicht hinbekommen. Es wäre nicht ratsam zu prüfen, ob dich ein einzelner Regentropfen trifft oder nicht, sondern prüfe lediglich, wie du den Regen aus dem aktuellen Standpunkt wahrnehmen würdest und stelle ihn mit deinen Mitteln dementsprechend dar.