add flash and thunders
This commit is contained in:
@@ -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:
|
||||
|
||||
@@ -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:
|
||||
|
||||
Reference in New Issue
Block a user