add flash and thunders

This commit is contained in:
Overside srl
2026-02-24 10:14:27 +01:00
parent 8b2ea22f0c
commit 392fd1254f
6 changed files with 63 additions and 15 deletions

View File

@@ -465,6 +465,10 @@ func _sync_weather_vfx() -> void:
return
weather_vfx.set_rain_intensity(weather_controller.get_rain_intensity())
weather_vfx.set_snow_intensity(weather_controller.get_snow_intensity())
weather_vfx.set_lightning(
weather_controller.is_lightning_active(),
weather_controller.get_lightning_frequency()
)
func _update_debug_info() -> void:

View File

@@ -19,6 +19,12 @@ extends Node3D
@export var lightning_color: Color = Color(0.9, 0.9, 1.0)
@export var lightning_flash_duration: float = 0.15
@export_group("Thunder")
@export var thunder_enabled: bool = true
@export var thunder_min_delay: float = 1.0
@export var thunder_max_delay: float = 5.0
@export var thunder_volume_db: float = -2.0
var _rain_particles: GPUParticles3D
var _snow_particles: GPUParticles3D
var _rain_material: ShaderMaterial
@@ -33,12 +39,16 @@ var _lightning_timer: float = 0.0
var _lightning_next: float = 0.0
var _lightning_flash_timer: float = 0.0
var _lightning_light: DirectionalLight3D
var _thunder_player: AudioStreamPlayer
var _thunder_pending: bool = false
var _thunder_delay_timer: float = 0.0
func _ready() -> void:
_create_rain_system()
_create_snow_system()
_create_lightning_light()
_create_thunder_player()
func _process(delta: float) -> void:
@@ -56,6 +66,7 @@ func _process(delta: float) -> void:
_snow_material.set_shader_parameter("alpha_mult", _current_snow)
_process_lightning(delta)
_process_thunder(delta)
_follow_camera()
@@ -87,6 +98,36 @@ func _trigger_lightning() -> void:
_lightning_light.visible = true
_lightning_light.rotation_degrees.x = randf_range(-80.0, -50.0)
_lightning_light.rotation_degrees.y = randf_range(-180.0, 180.0)
if thunder_enabled:
_thunder_pending = true
_thunder_delay_timer = randf_range(thunder_min_delay, thunder_max_delay)
func _process_thunder(delta: float) -> void:
if not _thunder_pending:
return
_thunder_delay_timer -= delta
if _thunder_delay_timer <= 0.0:
_thunder_pending = false
_play_thunder()
func _play_thunder() -> void:
if _thunder_player == null:
return
_thunder_player.play()
func _create_thunder_player() -> void:
_thunder_player = AudioStreamPlayer.new()
_thunder_player.name = "ThunderPlayer"
_thunder_player.volume_db = thunder_volume_db
_thunder_player.bus = "Master"
_thunder_player.stream = load("res://resources/thunder.mp3")
add_child(_thunder_player)
func _create_lightning_light() -> void: