@tool class_name Ground2D extends Node2D @export_group("Player", "player_") @export var player_y_fixed := true @export var player_y := 45: set(val): player_y = val if is_node_ready(): player.position.y = player_y @export_group("Sound") @export_enum("none", "ghost", "walking", "running", "crawling", "concrete") var footstep_type: String = "concrete": set(val): footstep_type = val if is_node_ready(): _load_footstep_audio() @onready var player = %MainPlayer as MainPlayer @onready var directional_light := %DirectionalLight2D as DirectionalLight2D @onready var foreground = %ParallaxForeground as ParallaxBackground @onready var footstep_audio = %FootstepAudioPlayer as RandomAudioStreamPlayer const FOOTSTEP_AUDIO = { #"wood": preload("res://config/audio/footstep/footstep_wood.tres"), #"carpet": preload("res://config/audio/footstep/footstep_carpet.tres"), "concrete": preload("res://config/audio/footstep/footstep_concrete.tres"), #"grass": preload("res://config/audio/footstep/footstep_grass.tres"), #"snow": preload("res://config/audio/footstep/footstep_snow.tres"), "ghost": preload("res://config/audio/sfx/footstep_ghost.tres"), "walking": preload("res://config/audio/sfx/footstep_walking.tres"), "running": preload("res://config/audio/sfx/footstep_running.tres"), "crawling": preload("res://config/audio/sfx/footstep_crawling.tres"), } func _ready() -> void: foreground.layer = GlobalConfig.CANVAS_LAYER_FG player.position.y = player_y if Engine.is_editor_hint(): return _load_footstep_audio() # %ColorRectTop.visible = true # %ColorRectBottom.visible = true func _load_footstep_audio(): # foot step sound footstep_audio.audio_collections.clear() if footstep_type != "none": var audio = FOOTSTEP_AUDIO[footstep_type] as AudioStreamCollection footstep_audio.audio_collections.append(audio) func play_footstep_sound() -> void: if not footstep_audio.audio_collections.is_empty(): footstep_audio.play_random()