优化传送音效

This commit is contained in:
cakipaul 2024-12-27 21:52:11 +08:00
parent 27b9a5a50f
commit 77a180091c
6 changed files with 29 additions and 10 deletions

View File

@ -10,10 +10,14 @@ extends Sprite2D
@export var target_scene := "c02_s00"
@export_enum("none", "left", "right", "1", "2", "3", "4", "5", "6", "7", "8", "9")
var target_portal := "none"
@export_enum("door", "channel") var sound_effect := "door"
@onready var sign_mark = %Sign as Sprite2D
@onready var area2d = %Area2D as Area2D
var sfx_door := preload("res://config/audio/action/action_door_open.tres")
var sfx_channel := preload("res://config/audio/action/action_book_open.tres")
var activated := false
var action_times := 0
@ -25,6 +29,12 @@ func _ready() -> void:
area2d.body_exited.connect(_on_cancel)
sign_mark.interacted.connect(_on_interacted)
sign_mark.cancel.connect(_on_cancel)
# sound effect
if sound_effect == "door":
sign_mark.audio_collection = sfx_door
elif sound_effect == "channel":
sign_mark.audio_collection = sfx_channel
# show or hide sign
if target_portal == "none":
sign_mark.show_sign = false
@ -62,7 +72,7 @@ func _input(event: InputEvent) -> void:
action_times += 1
elif event.is_action("right"):
action_times = 0
if action_times >= 10:
if action_times >= 7:
activated = false
action_times = 0
if sign_mark.random_audio_player:
@ -73,7 +83,7 @@ func _input(event: InputEvent) -> void:
action_times += 1
elif event.is_action("left"):
action_times = 0
if action_times >= 10:
if action_times >= 7:
activated = false
action_times = 0
if sign_mark.random_audio_player:

View File

@ -15,7 +15,12 @@ extends Node2D
volume_db = val
if random_audio_player:
random_audio_player.volume_db = volume_db
@export var audio_collection: AudioStreamCollection
@export var audio_collection: AudioStreamCollection:
set(val):
audio_collection = val
if random_audio_player:
random_audio_player.audio_collections.clear()
random_audio_player.audio_collections.append(audio_collection)
signal interacted
signal cancel

View File

@ -42,10 +42,11 @@ func play_footstep_sound() -> void:
func transition_to_scene(key: String, portal: String, load_save := false) -> void:
var scene_path = ground_dict[key]
if scene_path:
var scene = load(scene_path).instantiate()
current_scene = key
entrance_portal = portal
if load_save:
_do_transition(scene_path)
_do_transition(scene)
# 更新玩家位置
_update_player_position()
else:
@ -55,8 +56,8 @@ func transition_to_scene(key: String, portal: String, load_save := false) -> voi
player.action_locked = true
#TODO 转场效果
#
tween.tween_interval(1.0)
tween.tween_callback(_do_transition.bind(scene_path))
tween.tween_interval(0.2)
tween.tween_callback(_do_transition.bind(scene))
tween.tween_callback(func(): player.action_locked = false)
else:
print("Scene not found: " + key)
@ -69,13 +70,11 @@ func _update_player_position():
player.global_position = ArchiveManager.archive.player_global_position
player.set_facing_direction(ArchiveManager.archive.player_direction)
func _do_transition(scene_path):
var new_ground = load(scene_path) as PackedScene
func _do_transition(scene: Node2D):
if ground:
ground.queue_free()
# 提前移除,防止命名冲突
remove_child(ground)
var scene = new_ground.instantiate()
ground = scene.get_child(0)
scene.remove_child(ground)
scene.queue_free()

View File

@ -30,6 +30,7 @@ texture = null
portal_name = "1"
target_scene = "c02_s02"
target_portal = "left"
sound_effect = "channel"
[node name="Inspectable" parent="Ground/DeployLayer" index="3" instance=ExtResource("5_g5fsn")]
position = Vector2(311, -7)

View File

@ -34,6 +34,7 @@ texture = null
portal_name = "right"
target_scene = "c02_s03"
target_portal = "left"
sound_effect = "channel"
[node name="鼠疫海报" parent="Ground/DeployLayer" index="3" instance=ExtResource("5_nhtbp")]
position = Vector2(277, -6)
@ -45,12 +46,14 @@ texture = ExtResource("7_xsghn")
flip_h = true
[node name="StaticBody2D" type="StaticBody2D" parent="Ground/DeployLayer/纸人"]
collision_layer = 0
collision_mask = 0
[node name="CollisionShape2D" type="CollisionShape2D" parent="Ground/DeployLayer/纸人/StaticBody2D"]
shape = SubResource("RectangleShape2D_0xrg2")
[node name="Ambush" parent="Ground/DeployLayer" index="5" instance=ExtResource("6_70vqn")]
position = Vector2(377, 62)
position = Vector2(434, 60)
hook_cg = "c02_胖子说话"
[node name="FGSprite2D" parent="Ground/ParallaxForeground/FGParallaxLayer" index="0"]

View File

@ -24,6 +24,7 @@ scale = Vector2(1.02941, 1.06667)
texture = null
target_scene = "c02_s02"
target_portal = "right"
sound_effect = "channel"
[node name="Portal2" parent="Ground/DeployLayer" index="3" instance=ExtResource("4_gvtrn")]
position = Vector2(192, 8)