From 838fd204a5115addd3d236a2b77f932a74ff076f Mon Sep 17 00:00:00 2001 From: Ervan Lefevre Date: Sun, 1 Oct 2023 15:58:03 +0200 Subject: [PATCH] :beers: Animated the wings --- nodes/player/player.gd | 12 ++ nodes/player/player.tscn | 362 +++++++++++++++++++++++++++++++++++++-- 2 files changed, 361 insertions(+), 13 deletions(-) diff --git a/nodes/player/player.gd b/nodes/player/player.gd index 1ec194b..cbdcbe6 100644 --- a/nodes/player/player.gd +++ b/nodes/player/player.gd @@ -7,6 +7,7 @@ class_name Player @onready var sound_player = $sound_player @onready var gliding_player = $gliding_player @onready var animator = $animator +@onready var wings_animator = $wings_animator @onready var body = $oriented_container/body @onready var grab_ray = get_node('oriented_container/body/grab_ray') @onready var sprite = get_node('oriented_container/body') @@ -63,6 +64,7 @@ var gravity = WORLD_GRAVITY var grabbed_obstacle = null func _ready(): + wings_animator.speed_scale = 0 $fsm.set_states(STATES) add_to_group("player") g_game_state.restore_checkpoint.connect(on_restore_checkpoint) @@ -173,8 +175,10 @@ func after_state(delta): func handle_glide(): if Input.is_action_just_pressed('player_jump'): gliding_player.play_sound(SOUNDS["gliding"]) + wings_animator.speed_scale = 1 if Input.is_action_just_released('player_jump'): gliding_player.stop_sound() + wings_animator.speed_scale = 0 func handle_gravity(delta): var gravity_delta = gravity @@ -224,18 +228,22 @@ func handle_sprite_orientation(): if is_wall_right && velocity.y > 0: body.look_down_on_right_wall() + wings_animator.play('wing_left') put_grabbed_object_at(Vector2(0, 35)) if is_wall_right && velocity.y < 0: body.look_up_on_right_wall() + wings_animator.play('wing_right') put_grabbed_object_at(Vector2(0, -35)) if !is_wall_right && velocity.y > 0: body.look_down_on_left_wall() + wings_animator.play('wing_right') put_grabbed_object_at(Vector2(0, 35)) if !is_wall_right && velocity.y < 0: body.look_up_on_left_wall() + wings_animator.play('wing_left') put_grabbed_object_at(Vector2(0, -35)) @@ -243,17 +251,21 @@ func handle_sprite_orientation(): if velocity.x != 0: if velocity.x > 0: body.look_right_on_ceiling() + wings_animator.play('wing_left') put_grabbed_object_at(Vector2(35, 0)) else: body.look_left_on_ceiling() + wings_animator.play('wing_right') put_grabbed_object_at(Vector2(-35, 0)) else: if velocity.x != 0: if velocity.x > 0: body.look_right() + wings_animator.play('wing_right') put_grabbed_object_at(Vector2(35, 0)) else: body.look_left() + wings_animator.play('wing_left') put_grabbed_object_at(Vector2(-35, 0)) func put_grabbed_object_at(at): diff --git a/nodes/player/player.tscn b/nodes/player/player.tscn index bee175f..c5ae68e 100644 --- a/nodes/player/player.tscn +++ b/nodes/player/player.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=25 format=3 uid="uid://c5rmt3jeffjx7"] +[gd_scene load_steps=27 format=3 uid="uid://c5rmt3jeffjx7"] [ext_resource type="Script" path="res://nodes/player/player.gd" id="1_exx2i"] [ext_resource type="Texture2D" uid="uid://cm4rn4vgyjd1b" path="res://nodes/player/temp.png" id="1_s33dc"] @@ -885,6 +885,306 @@ tracks/0/keys = { "update": 0, "values": [Vector2(0.2, 0.2)] } +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("oriented_container/body/wing_1:offset") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(38, -4)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("oriented_container/body/wing_1:rotation") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [3.48787e-16] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("oriented_container/body/wing_2:offset") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-38.4698, -3.39681)] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("oriented_container/body/wing_2:rotation") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0830452] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("oriented_container/body/wing_1:flip_h") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("oriented_container/body/wing_1:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-64, -10)] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("oriented_container/body/wing_2:position") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(12, -10)] +} +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("oriented_container/body/wing_2:flip_h") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} + +[sub_resource type="Animation" id="Animation_dv4pa"] +resource_name = "wing_right" +length = 0.05 +loop_mode = 1 +step = 0.0025 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("oriented_container/body/wing_1:offset") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-35.8716, -4.1675)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("oriented_container/body/wing_1:rotation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.0225, 0.04), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [3.48787e-16, 0.375246, -0.375246] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("oriented_container/body/wing_2:offset") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-26.1007, 0.283716)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("oriented_container/body/wing_2:rotation") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.0225, 0.04), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [0.0830452, -0.366519, -0.366519] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("oriented_container/body/wing_1:flip_h") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("oriented_container/body/wing_1:position") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(12, -8)] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("oriented_container/body/wing_2:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(11.109, -10.8932)] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("oriented_container/body/wing_2:flip_h") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} + +[sub_resource type="Animation" id="Animation_rie51"] +resource_name = "wing_left" +length = 0.05 +loop_mode = 1 +step = 0.0025 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("oriented_container/body/wing_1:offset") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(38, -4)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("oriented_container/body/wing_1:rotation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.0225, 0.04), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [3.48787e-16, 0.375246, -0.375246] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("oriented_container/body/wing_2:offset") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(36.7168, -5.84125)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("oriented_container/body/wing_2:rotation") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.0225, 0.04), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [0.0830452, -0.366519, -0.366519] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("oriented_container/body/wing_1:flip_h") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("oriented_container/body/wing_1:position") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-20, -14)] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("oriented_container/body/wing_2:flip_h") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("oriented_container/body/wing_2:position") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-20, -12)] +} [sub_resource type="Animation" id="Animation_gwu4b"] resource_name = "zoom_in" @@ -901,10 +1201,29 @@ tracks/0/keys = { "update": 0, "values": [Vector2(0.2, 0.2), Vector2(0.2, 0.2), Vector2(5, 5)] } +tracks/1/type = "method" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("fsm") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 3), +"transitions": PackedFloat32Array(1, 1), +"values": [{ +"args": [false], +"method": &"set_physics_process" +}, { +"args": [true], +"method": &"set_physics_process" +}] +} [sub_resource type="AnimationLibrary" id="AnimationLibrary_t0d07"] _data = { "RESET": SubResource("Animation_kwmth"), +"wing_left": SubResource("Animation_rie51"), +"wing_right": SubResource("Animation_dv4pa"), "zoom_in": SubResource("Animation_gwu4b") } @@ -1068,7 +1387,7 @@ tracks/12/keys = { } tracks/13/type = "value" tracks/13/imported = false -tracks/13/enabled = true +tracks/13/enabled = false tracks/13/path = NodePath("oriented_container/body/wing_1:flip_h") tracks/13/interp = 1 tracks/13/loop_wrap = true @@ -1080,7 +1399,7 @@ tracks/13/keys = { } tracks/14/type = "value" tracks/14/imported = false -tracks/14/enabled = true +tracks/14/enabled = false tracks/14/path = NodePath("oriented_container/body/wing_1:position") tracks/14/interp = 1 tracks/14/loop_wrap = true @@ -1092,7 +1411,7 @@ tracks/14/keys = { } tracks/15/type = "value" tracks/15/imported = false -tracks/15/enabled = true +tracks/15/enabled = false tracks/15/path = NodePath("oriented_container/body/wing_2:flip_h") tracks/15/interp = 1 tracks/15/loop_wrap = true @@ -1104,7 +1423,7 @@ tracks/15/keys = { } tracks/16/type = "value" tracks/16/imported = false -tracks/16/enabled = true +tracks/16/enabled = false tracks/16/path = NodePath("oriented_container/body/wing_2:position") tracks/16/interp = 1 tracks/16/loop_wrap = true @@ -1307,7 +1626,7 @@ tracks/14/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), "update": 0, -"values": [Vector2(24, -6)] +"values": [Vector2(14, -10)] } tracks/15/type = "value" tracks/15/imported = false @@ -1345,6 +1664,18 @@ tracks/17/keys = { "update": 0, "values": [0.0] } +tracks/18/type = "value" +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/path = NodePath("oriented_container/body/wing_1:offset") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-38.2046, -3.8798)] +} [sub_resource type="Animation" id="Animation_ba4v1"] resource_name = "right" @@ -1506,7 +1837,7 @@ tracks/12/keys = { } tracks/13/type = "value" tracks/13/imported = false -tracks/13/enabled = true +tracks/13/enabled = false tracks/13/path = NodePath("oriented_container/body/wing_1:flip_h") tracks/13/interp = 1 tracks/13/loop_wrap = true @@ -1518,7 +1849,7 @@ tracks/13/keys = { } tracks/14/type = "value" tracks/14/imported = false -tracks/14/enabled = true +tracks/14/enabled = false tracks/14/path = NodePath("oriented_container/body/wing_1:position") tracks/14/interp = 1 tracks/14/loop_wrap = true @@ -1530,7 +1861,7 @@ tracks/14/keys = { } tracks/15/type = "value" tracks/15/imported = false -tracks/15/enabled = true +tracks/15/enabled = false tracks/15/path = NodePath("oriented_container/body/wing_2:flip_h") tracks/15/interp = 1 tracks/15/loop_wrap = true @@ -1542,7 +1873,7 @@ tracks/15/keys = { } tracks/16/type = "value" tracks/16/imported = false -tracks/16/enabled = true +tracks/16/enabled = false tracks/16/path = NodePath("oriented_container/body/wing_2:position") tracks/16/interp = 1 tracks/16/loop_wrap = true @@ -1637,16 +1968,16 @@ texture = ExtResource("4_cqlnm") offset = Vector2(-8, 12) [node name="wing_1" type="Sprite2D" parent="oriented_container/body"] -position = Vector2(24, -6) +position = Vector2(14, -10) texture = ExtResource("5_a0305") -offset = Vector2(-38, -4) +offset = Vector2(-38.2046, -3.8798) [node name="wing_2" type="Sprite2D" parent="oriented_container/body"] show_behind_parent = true position = Vector2(24, -6) rotation = 0.0830452 texture = ExtResource("5_a0305") -offset = Vector2(-38, -4) +offset = Vector2(-38.4698, -3.39681) [node name="grab_ray" type="RayCast2D" parent="oriented_container/body"] position = Vector2(-4.1633e-12, -4.1633e-12) @@ -1664,6 +1995,11 @@ libraries = { "": SubResource("AnimationLibrary_t0d07") } +[node name="wings_animator" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_t0d07") +} + [node name="sound_player" type="AudioStreamPlayer2D" parent="."] script = ExtResource("4_jraxp")