extends CharacterBody2D signal interaction_happened(text) @export var npc_name: String = "NPC" @export var dialogue: String = "欢迎来到WhaleTown,我是镇长范鲸晶" func _ready(): $Sprite2D.texture = preload("res://assets/characters/npc_286_241.png") $Sprite2D.hframes = 4 $Sprite2D.vframes = 4 # Start Idle Animation if has_node("AnimationPlayer"): $AnimationPlayer.play("idle") # Ensure interaction layer collision_layer = 3 # Layer 1 & 2 (Blocking) collision_mask = 3 func interact(): show_bubble(dialogue) interaction_happened.emit(dialogue) return null func show_bubble(text): var bubble = preload("res://scenes/ui/ChatBubble.tscn").instantiate() add_child(bubble) bubble.set_text(text)