97 lines
3.1 KiB
GDScript3
97 lines
3.1 KiB
GDScript3
|
extends CanvasLayer
|
||
|
|
||
|
@onready var a_match = $"火柴/A火" as AnimatedSprite2D
|
||
|
@onready var l_match = $"火柴/L火柴" as PointLight2D
|
||
|
@onready var l_vibe = $"火柴/L光晕" as PointLight2D
|
||
|
@onready var root_match = $"火柴" as Node2D
|
||
|
|
||
|
@onready var a_xiaochan = $"BG_小蝉/A小蝉侧头" as AnimatedSprite2D
|
||
|
@onready var a_eye = $"小蝶脸部/A眼睛" as AnimatedSprite2D
|
||
|
@onready var a_mouth = $"小蝶脸部/A嘴巴" as AnimatedSprite2D
|
||
|
|
||
|
@onready var a_hand_root = $"小蝉手" as Node2D
|
||
|
@onready var a_hand_shadow = $"小蝉手/A小蝉捂脸阴影" as AnimatedSprite2D
|
||
|
@onready var a_hand_arm = $"小蝉手/A小蝉捂脸胳膊" as AnimatedSprite2D
|
||
|
@onready var a_hand = $"小蝉手/A小蝉捂脸手" as AnimatedSprite2D
|
||
|
|
||
|
@onready var animation_player = $AnimationPlayer as AnimationPlayer
|
||
|
|
||
|
var sprite_frames: SpriteFrames
|
||
|
|
||
|
|
||
|
func _ready() -> void:
|
||
|
layer = GlobalConfig.CANVAS_LAYER_LITTLE_GAME
|
||
|
sprite_frames = a_match.sprite_frames
|
||
|
a_match.frame_changed.connect(_on_match_frame_changed.call_deferred)
|
||
|
start()
|
||
|
|
||
|
|
||
|
func _on_match_frame_changed():
|
||
|
# 火柴光替换 L火柴 的 texture
|
||
|
l_match.texture = sprite_frames.get_frame_texture("火柴光", a_match.frame)
|
||
|
# frame == 3 时最大,共 7 frames
|
||
|
l_vibe.texture_scale = 1.0 + smoothstep(0, 4, pingpong(a_match.frame, 3)) * 0.3
|
||
|
|
||
|
|
||
|
var dialogue_c02 = preload("res://asset/dialogue/c02.dialogue")
|
||
|
|
||
|
|
||
|
func start():
|
||
|
# 配合嘴巴动效
|
||
|
DialogueManager.got_dialogue.connect(_on_got_dialogue)
|
||
|
DialogueManager.dialogue_ended.connect(_on_dialogue_ended)
|
||
|
root_match.hide()
|
||
|
await create_tween().tween_interval(3.0).finished
|
||
|
#### part1: 擦火柴
|
||
|
root_match.position.y = 100
|
||
|
$"Sfx擦火柴".play()
|
||
|
await create_tween().tween_interval(0.3).finished
|
||
|
root_match.show()
|
||
|
# 伸手
|
||
|
var tween = create_tween()
|
||
|
tween.tween_property(root_match, "position:y", 0, 2.0)
|
||
|
tween.tween_interval(2.0)
|
||
|
await tween.finished
|
||
|
#### part2: 小蝉浮现,对话
|
||
|
# 小蝉侧过来
|
||
|
a_xiaochan.play("小婵探头出来")
|
||
|
await a_xiaochan.animation_finished
|
||
|
await create_tween().tween_interval(0.5).finished
|
||
|
# 斜眼看
|
||
|
a_eye.play("眼睛斜看")
|
||
|
await a_eye.animation_finished
|
||
|
await create_tween().tween_interval(1.5).finished
|
||
|
# 和小蝉对话
|
||
|
DialogueManager.show_dialogue_balloon(dialogue_c02, "c02_s11_谢幕交谈1")
|
||
|
await DialogueManager.dialogue_ended
|
||
|
#### part3: 小蝉捂眼,瞎子、胖子声音
|
||
|
# 小蝉身体回正、捂眼
|
||
|
a_xiaochan.play("小婵探头回去")
|
||
|
await a_xiaochan.animation_finished
|
||
|
animation_player.play("小蝉捂眼")
|
||
|
await animation_player.animation_finished
|
||
|
SceneManager.pop_debug_dialog_info("音效", "小蝉笑声/耳鸣")
|
||
|
await create_tween().tween_interval(3.0).finished
|
||
|
# 瞎子打断
|
||
|
DialogueManager.show_dialogue_balloon(dialogue_c02, "c02_s11_谢幕交谈2")
|
||
|
await DialogueManager.dialogue_ended
|
||
|
#### part4: 结束
|
||
|
ArchiveManager.set_global_entry("c02_burning_end", true)
|
||
|
SceneManager.release_player()
|
||
|
|
||
|
|
||
|
func _on_got_dialogue(line: DialogueLine):
|
||
|
toggle_speak(line.character == "吕萍")
|
||
|
|
||
|
|
||
|
func _on_dialogue_ended(_res):
|
||
|
toggle_speak(false)
|
||
|
|
||
|
|
||
|
func toggle_speak(talking := true):
|
||
|
if talking:
|
||
|
a_mouth.play("嘴巴动效")
|
||
|
else:
|
||
|
a_mouth.stop()
|
||
|
a_mouth.frame = 0
|