-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathMain.gd
More file actions
67 lines (52 loc) · 2.21 KB
/
Copy pathMain.gd
File metadata and controls
67 lines (52 loc) · 2.21 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
extends Node2D
@onready var player: SpriteStudioPlayer2D = $Ringo
@onready var label: Label = $Label
var anims = ["attack1", "walk", "wait"]
var current_anim_index = 0
func _ready() -> void:
# Connect to SpriteStudioPlayer2D signals to demonstrate script control
player.animation_started.connect(_on_animation_started)
player.animation_finished.connect(_on_animation_finished)
player.animation_looped.connect(_on_animation_looped)
player.signal_emitted.connect(_on_signal_emitted)
player.user_data.connect(_on_user_data)
play_current()
update_label()
func _input(event: InputEvent) -> void:
# Change animation on Left Click or Enter / Space
if event.is_action_pressed("ui_accept") or (event is InputEventMouseButton and event.pressed and event.button_index == MOUSE_BUTTON_LEFT):
current_anim_index = (current_anim_index + 1) % anims.size()
play_current()
update_label()
# Flip horizontally on Right Arrow
elif event.is_action_pressed("ui_right"):
player.scale.x *= -1
# Adjust playback speed on Up/Down Arrows
elif event.is_action_pressed("ui_up"):
player.speed_scale += 0.5
update_label()
elif event.is_action_pressed("ui_down"):
player.speed_scale = max(0.1, player.speed_scale - 0.5)
update_label()
func play_current() -> void:
var anim_name = anims[current_anim_index]
player.animation = anim_name
player.play()
func update_label() -> void:
if label:
label.text = "--- SpriteStudioPlayer2D GDScript Example ---\n\n"
label.text += "Click or Press Enter/Space: Change Animation\n"
label.text += "Up/Down Arrows: Change Speed\n"
label.text += "Right Arrow: Flip Horizontal\n\n"
label.text += "Current Animation: " + player.animation + "\n"
label.text += "Speed Scale: " + str(player.speed_scale) + "\n"
func _on_animation_started(anim_name: String) -> void:
print("Animation started: ", anim_name)
func _on_animation_finished(anim_name: String) -> void:
print("Animation finished: ", anim_name)
func _on_animation_looped(anim_name: String) -> void:
print("Animation looped: ", anim_name)
func _on_signal_emitted(command: String, value: Dictionary) -> void:
print("Signal emitted: ", command, " value: ", value)
func _on_user_data(payload: Dictionary) -> void:
print("User data: ", payload)