From 6d50f50403049b001a91cb37984e58ec0f76563e Mon Sep 17 00:00:00 2001 From: Ervan Lefevre Date: Sun, 1 Oct 2023 15:02:30 +0200 Subject: [PATCH] :tada: FFS I DID IT, IT IS ANIMATED --- nodes/player/leg.png | Bin 0 -> 1114 bytes nodes/player/leg.png.import | 34 + nodes/player/player.gd | 62 +- nodes/player/player.tscn | 1613 +++++++++++++++++++++++++++++- nodes/player/temp.png | Bin 1066 -> 5781 bytes nodes/player/wing.png | Bin 0 -> 3082 bytes nodes/player/wing.png.import | 34 + nodes/ui/ui.tscn | 56 +- scenes/lose_screen.tscn | 1 + scenes/poc.tscn | 2 +- scenes/win_screen.tscn | 1 + scripts/gameplay/rising_level.gd | 2 +- scripts/ia/fsm.gd | 3 + 13 files changed, 1751 insertions(+), 57 deletions(-) create mode 100644 nodes/player/leg.png create mode 100644 nodes/player/leg.png.import create mode 100644 nodes/player/wing.png create mode 100644 nodes/player/wing.png.import diff --git a/nodes/player/leg.png b/nodes/player/leg.png new file mode 100644 index 0000000000000000000000000000000000000000..a633f8310f33e3aba1f315edb5a641e47547e0a5 GIT binary patch literal 1114 zcmV-g1f~0lP)EX>4Tx04R}tkv&MmP!xqvQ>9WWB6bjQ$WWauf{Hk56^c+H)C#RSn7s54nlvOS zE{=k0!NH%!s)LKOt`4q(Aov5~>f)s6A|>9J6k5c1;qgAsyXWxUeSpxYFwN?k1vK3@ z)5(OG&8>=|SA-Ej2;=CNnPtpLQVPEHbx*xicX6KO-}h(rs(Fh60g-r?8KzCVK|H-_ z8=UuvqpT#W#OK6gCS8#Dk?V@bZ=8!R3p_JwX43P-QDU*!!Ab|SlBp3-5yw<_Qpd2CnqBzuEw1K1r{) zwb&8Rw+&oew>4!CxZD8-pA6ZQT`5RQC=`JAGy0|+FmMZm*Sxv4&T;wxWN22Y8{ps& z7%fuvy3f0NI_LIpPiuZZXZ~`c{00Ea`?Ol{$6yW%WQ1L=&r0`KKGc{r&8< zHVlvlr|NS2;Dl^;uKEStK2a0jh4<|yo`~-yt~~vy28R7PyIX2bGqq;}Q^D`g#&E_k z+7NOBF$$NTuBjiwZXU}-@|>S1AavHbv^(bDMS~J zX1z-8i5<6<~|CU@`o+9=+i(i@DoXMq|6nQy8RC79As>PXgrxhG8;h2h>xTMY`c znHE$gWL+px)C$e~Qfpukfb~%!F46ffa_!wDzKU!&8j1K`h8xxRUgG|0TWuSbW#Dzd zB?V^NoX@aM&oUAM(Pn6dgf;SrH!!!j3t_leGL5b~tkK+EZVjcTLuDxc>EP_JUZ5oi zt_~t>Iu#po0e=BRc{UF%-tI gWBKE#+mV|814@Jbh^{=ss{jB107*qoM6N<$g7$k56aWAK literal 0 HcmV?d00001 diff --git a/nodes/player/leg.png.import b/nodes/player/leg.png.import new file mode 100644 index 0000000..28eb61b --- /dev/null +++ b/nodes/player/leg.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://bmwr4rg64i653" +path="res://.godot/imported/leg.png-a9d362e34cfbec5efab131933df0b7af.ctex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://nodes/player/leg.png" +dest_files=["res://.godot/imported/leg.png-a9d362e34cfbec5efab131933df0b7af.ctex"] + +[params] + +compress/mode=0 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=false +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=1 diff --git a/nodes/player/player.gd b/nodes/player/player.gd index 8700a6c..1ec194b 100644 --- a/nodes/player/player.gd +++ b/nodes/player/player.gd @@ -6,6 +6,10 @@ class_name Player @onready var sound_player = $sound_player @onready var gliding_player = $gliding_player +@onready var animator = $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') const SPEED = 100.0 const JUMP_VELOCITY = 200.0 @@ -38,7 +42,7 @@ var can_grab_obstacles = { "climb": true, "die": false, "idle": true, - "jump": false, + "jump": true, "spawn": false, "walk": true, "swim": true @@ -48,13 +52,10 @@ const SOUNDS = { "death": {"asset": preload("res://assets/sounds/player_death.wav"), "volume": 0.5}, "jump": {"asset": preload("res://assets/sounds/jump.wav"), "volume": 0.5}, "grab": {"asset": preload("res://assets/sounds/grab.wav"), "volume": 0.5}, - "gliding": {"asset": preload("res://assets/sounds/gliding.wav"), "volume": -40}, + "gliding": {"asset": preload("res://assets/sounds/gliding.wav"), "volume": -20}, } -@onready var grab_ray = get_node('oriented_container/grab_ray') -@onready var sprite = get_node('oriented_container/sprite') - # Get the gravity from the project settings to be synced with RigidBody nodes. var WORLD_GRAVITY = ProjectSettings.get_setting("physics/2d/default_gravity") var gravity = WORLD_GRAVITY @@ -214,30 +215,54 @@ func drop_obstacle(): grabbed_obstacle = null func handle_sprite_orientation(): + if is_on_wall_only(): if velocity.y != 0: - $oriented_container.rotation = PI/2 if (velocity.y > 0) else - PI / 2 var wall_position = get_slide_collision(0).get_position().x var player_position = $oriented_container.get_global_position().x - var should_flip_with_wall_left = (wall_position > player_position) && (velocity.y > 0) - var should_flip_with_wall_right = (wall_position < player_position) && (velocity.y < 0) - sprite.flip_v = should_flip_with_wall_left || should_flip_with_wall_right - sprite.flip_h = false + var is_wall_right = wall_position > player_position + + if is_wall_right && velocity.y > 0: + body.look_down_on_right_wall() + put_grabbed_object_at(Vector2(0, 35)) + + if is_wall_right && velocity.y < 0: + body.look_up_on_right_wall() + put_grabbed_object_at(Vector2(0, -35)) + + if !is_wall_right && velocity.y > 0: + body.look_down_on_left_wall() + put_grabbed_object_at(Vector2(0, 35)) + + if !is_wall_right && velocity.y < 0: + body.look_up_on_left_wall() + put_grabbed_object_at(Vector2(0, -35)) elif is_on_ceiling_only(): if velocity.x != 0: - $oriented_container.rotation = 0.0 if (velocity.x > 0) else PI - sprite.flip_v = velocity.x > 0 - sprite.flip_h = false + if velocity.x > 0: + body.look_right_on_ceiling() + put_grabbed_object_at(Vector2(35, 0)) + else: + body.look_left_on_ceiling() + put_grabbed_object_at(Vector2(-35, 0)) else: if velocity.x != 0: - $oriented_container.rotation = 0.0 if (velocity.x > 0) else PI - sprite.flip_v = velocity.x < 0 - sprite.flip_h = false + if velocity.x > 0: + body.look_right() + put_grabbed_object_at(Vector2(35, 0)) + else: + body.look_left() + put_grabbed_object_at(Vector2(-35, 0)) + +func put_grabbed_object_at(at): + if grabbed_obstacle: + grabbed_obstacle.position = at + func on_enter_swim_state(): - sprite.modulate = Color(0, 0, 1) + sprite.modulate = Color(0, 0, 1) # TODO : light effect gravity = WORLD_GRAVITY / 2 func swim_state(_delta): @@ -292,3 +317,6 @@ func on_restore_checkpoint(_level_rising): func on_gliding_sound_finished(): if Input.is_action_pressed('player_jump'): gliding_player.play_sound(SOUNDS["gliding"]) + +func on_state_changed(_previous, current): + animator.play(current) diff --git a/nodes/player/player.tscn b/nodes/player/player.tscn index 07bfce9..bee175f 100644 --- a/nodes/player/player.tscn +++ b/nodes/player/player.tscn @@ -1,14 +1,891 @@ -[gd_scene load_steps=9 format=3 uid="uid://c5rmt3jeffjx7"] +[gd_scene load_steps=25 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"] [ext_resource type="Script" path="res://scripts/ia/fsm.gd" id="2_ix1o4"] +[ext_resource type="Texture2D" uid="uid://bmwr4rg64i653" path="res://nodes/player/leg.png" id="4_cqlnm"] [ext_resource type="Script" path="res://scripts/sounds/sound_player.gd" id="4_jraxp"] +[ext_resource type="Texture2D" uid="uid://dpc4onvoal7n0" path="res://nodes/player/wing.png" id="5_a0305"] [sub_resource type="CapsuleShape2D" id="CapsuleShape2D_w17ly"] radius = 9.0 height = 24.0 +[sub_resource type="GDScript" id="GDScript_7pyoe"] +script/source = "extends Sprite2D + + +func set_super_flip_v(val): + var anim = 'right' if !val else 'left' + prints('flip_v: ', val, 'anim:', anim) + get_node('../../killme').play(anim) + + + +func set_super_flip_h(val): + var anim = 'right' if val else 'left' + rotation = PI if val else 0 + prints('flip_h: ', val, 'anim:', anim, 'rotation:', rotation) + get_node('../../killme').play(anim) + pass + +func look_right(): + rotation = 0 + get_node('../../killme').play('right') + +func look_left(): + rotation = 0 + get_node('../../killme').play('left') + +func look_right_on_ceiling(): + look_left() + rotation = PI + +func look_left_on_ceiling(): + look_right() + rotation = PI + +func look_down_on_right_wall(): + look_left() + rotation = -PI/2 + +func look_down_on_left_wall(): + look_right() + rotation = PI / 2 + +func look_up_on_left_wall(): + look_left() + rotation = PI / 2 + +func look_up_on_right_wall(): + look_right() + rotation = -PI / 2 +" + +[sub_resource type="Animation" id="Animation_0g13i"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("oriented_container/body/leg_1:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1, 1)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("oriented_container/body/leg_4:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0.8, 0.8)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("oriented_container/body/leg_2:scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1, 1)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("oriented_container/body/leg_5:scale") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0.8, 0.8)] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("oriented_container/body/leg_3:scale") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1, 1)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("oriented_container/body/leg_6:scale") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0.8, 0.8)] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("oriented_container/body:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(2.08165e-12, 2.08165e-12)] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("oriented_container/body/leg_4:position") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(28, -4)] +} +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("oriented_container/body/leg_5:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(6, -4)] +} +tracks/9/type = "value" +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/path = NodePath("oriented_container/body/leg_6:position") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-10, -6)] +} +tracks/10/type = "value" +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/path = NodePath("oriented_container/body/leg_1:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(26, 0)] +} +tracks/11/type = "value" +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/path = NodePath("oriented_container/body/leg_2:position") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(2, -4)] +} +tracks/12/type = "value" +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/path = NodePath("oriented_container/body/leg_3:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-16, -6)] +} +tracks/13/type = "value" +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/path = NodePath("oriented_container/body/leg_4:rotation") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/14/type = "value" +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/path = NodePath("oriented_container/body/leg_5:rotation") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/15/type = "value" +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/path = NodePath("oriented_container/body/leg_6:rotation") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.523599] +} +tracks/16/type = "value" +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/path = NodePath("oriented_container/body/leg_1:rotation") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/17/type = "value" +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/path = NodePath("oriented_container/body/leg_2:rotation") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/18/type = "value" +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/path = NodePath("oriented_container/body/leg_3:rotation") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} +tracks/19/type = "value" +tracks/19/imported = false +tracks/19/enabled = true +tracks/19/path = NodePath("oriented_container/body:scale") +tracks/19/interp = 1 +tracks/19/loop_wrap = true +tracks/19/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0.5, 0.5)] +} + +[sub_resource type="Animation" id="Animation_r0rsn"] +resource_name = "climb" +length = 2.0 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("oriented_container/body/leg_1:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 1.2, 2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(1, 1), Vector2(-0.92, 1), Vector2(1, 1)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("oriented_container/body/leg_4:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.6, 1.2, 2), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [Vector2(0.8, 0.8), Vector2(-0.399995, 0.8), Vector2(-0.399995, 0.8), Vector2(0.8, 0.8)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("oriented_container/body/leg_2:scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0.6, 1.2, 2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(1, 1), Vector2(-0.920002, 1), Vector2(1, 1)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("oriented_container/body/leg_5:scale") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0.5, 1.2, 2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(0.8, 0.8), Vector2(-0.8, 0.8), Vector2(1, 1)] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("oriented_container/body/leg_3:scale") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 0.8, 2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(1, 1), Vector2(-0.5, 1), Vector2(1, 1)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("oriented_container/body/leg_6:scale") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0, 0.8, 2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(0.8, 0.8), Vector2(-0.8, 0.8), Vector2(1, 0.8)] +} + +[sub_resource type="Animation" id="Animation_ytg3i"] +resource_name = "die" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("oriented_container/body:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.2), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(0.5, 0.5), Vector2(0.5, -0.5)] +} + +[sub_resource type="Animation" id="Animation_tw7rf"] +resource_name = "idle" +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("oriented_container/body/leg_4:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0.400002, 0.8)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("oriented_container/body/leg_5:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0.92, 0.92)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("oriented_container/body/leg_6:scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0.4, 0.8)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("oriented_container/body/leg_1:scale") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0.68, 1)] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("oriented_container/body/leg_2:scale") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(1, 1)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("oriented_container/body/leg_3:scale") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0.625, 1)] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("oriented_container/body:position") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0, 0.5, 1), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(2.08165e-12, 2.08165e-12), Vector2(2.08165e-12, -0.3), Vector2(2.08165e-12, 2.08165e-12)] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("oriented_container/body/leg_4:position") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0, 0.5, 1), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(28, -3.7), Vector2(28, -3.4), Vector2(28, -3.7)] +} +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("oriented_container/body/leg_5:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(0, 0.5, 1), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(6, -4), Vector2(6, -3.7), Vector2(6, -4)] +} +tracks/9/type = "value" +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/path = NodePath("oriented_container/body/leg_6:position") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(-10, -6), Vector2(-10, -5.7)] +} +tracks/10/type = "value" +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/path = NodePath("oriented_container/body/leg_1:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(26, 0), Vector2(26, 0.3)] +} +tracks/11/type = "value" +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/path = NodePath("oriented_container/body/leg_2:position") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(2, -4), Vector2(2, -3.7)] +} +tracks/12/type = "value" +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/path = NodePath("oriented_container/body/leg_3:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(-16, -6), Vector2(-16, -5.7)] +} +tracks/13/type = "value" +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/path = NodePath("oriented_container/body/leg_3:rotation") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [3.48787e-16] +} +tracks/14/type = "value" +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/path = NodePath("oriented_container/body/leg_4:rotation") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [3.48787e-16] +} +tracks/15/type = "value" +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/path = NodePath("oriented_container/body/leg_5:rotation") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [3.48787e-16] +} +tracks/16/type = "value" +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/path = NodePath("oriented_container/body/leg_6:rotation") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [3.48787e-16] +} +tracks/17/type = "value" +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/path = NodePath("oriented_container/body/leg_1:rotation") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [3.48787e-16] +} +tracks/18/type = "value" +tracks/18/imported = false +tracks/18/enabled = true +tracks/18/path = NodePath("oriented_container/body/leg_2:rotation") +tracks/18/interp = 1 +tracks/18/loop_wrap = true +tracks/18/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [3.48787e-16] +} + +[sub_resource type="Animation" id="Animation_ksgbq"] +resource_name = "jump" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("oriented_container/body/leg_4:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.2), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(0.400002, 0.8), Vector2(0.4, 1)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("oriented_container/body/leg_5:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.2), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(0.92, 0.92), Vector2(0.92, 1)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("oriented_container/body/leg_6:scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.2), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(0.4, 0.8), Vector2(0.4, 1)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("oriented_container/body/leg_1:scale") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.2), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(0.68, 1), Vector2(0.68, 1.2)] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("oriented_container/body/leg_2:scale") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 0.2), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(1, 1), Vector2(1, 1.2)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("oriented_container/body/leg_3:scale") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0, 0.2), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [Vector2(0.625, 1), Vector2(0.625, 1.2)] +} + +[sub_resource type="Animation" id="Animation_7uf5v"] +resource_name = "spawn" + +[sub_resource type="Animation" id="Animation_kgv4j"] +resource_name = "swim" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("oriented_container/body/leg_4:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 0.523599] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("oriented_container/body/leg_5:rotation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 0.523599] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("oriented_container/body/leg_6:rotation") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [3.48787e-16, 0.523599] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("oriented_container/body/leg_1:rotation") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 0.523599] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("oriented_container/body/leg_2:rotation") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 0.523599] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("oriented_container/body/leg_3:rotation") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0, 0.5), +"transitions": PackedFloat32Array(1, 1), +"update": 0, +"values": [0.0, 0.523599] +} + +[sub_resource type="Animation" id="Animation_68ic7"] +resource_name = "walk" +length = 2.0 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("oriented_container/body/leg_1:scale") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 1.2, 2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(1, 1), Vector2(-0.92, 1), Vector2(1, 1)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("oriented_container/body/leg_4:scale") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.6, 1.2, 2), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [Vector2(0.8, 0.8), Vector2(-0.399995, 0.8), Vector2(-0.399995, 0.8), Vector2(0.8, 0.8)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("oriented_container/body/leg_2:scale") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0.6, 1.2, 2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(1, 1), Vector2(-0.920002, 1), Vector2(1, 1)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("oriented_container/body/leg_5:scale") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0.5, 1.2, 2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(0.8, 0.8), Vector2(-0.8, 0.8), Vector2(1, 1)] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("oriented_container/body/leg_3:scale") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 0.8, 2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(1, 1), Vector2(-0.5, 1), Vector2(1, 1)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("oriented_container/body/leg_6:scale") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0, 0.8, 2), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector2(0.8, 0.8), Vector2(-0.8, 0.8), Vector2(1, 0.8)] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_w7sbx"] +_data = { +"RESET": SubResource("Animation_0g13i"), +"climb": SubResource("Animation_r0rsn"), +"die": SubResource("Animation_ytg3i"), +"idle": SubResource("Animation_tw7rf"), +"jump": SubResource("Animation_ksgbq"), +"spawn": SubResource("Animation_7uf5v"), +"swim": SubResource("Animation_kgv4j"), +"walk": SubResource("Animation_68ic7") +} + +[sub_resource type="Animation" id="Animation_kwmth"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("camera:zoom") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(0.2, 0.2)] +} + [sub_resource type="Animation" id="Animation_gwu4b"] resource_name = "zoom_in" length = 3.0 @@ -25,25 +902,674 @@ tracks/0/keys = { "values": [Vector2(0.2, 0.2), Vector2(0.2, 0.2), Vector2(5, 5)] } -[sub_resource type="Animation" id="Animation_kwmth"] +[sub_resource type="AnimationLibrary" id="AnimationLibrary_t0d07"] +_data = { +"RESET": SubResource("Animation_kwmth"), +"zoom_in": SubResource("Animation_gwu4b") +} + +[sub_resource type="Animation" id="Animation_77oc2"] +resource_name = "left" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("oriented_container/body:flip_h") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("oriented_container/body/leg_4:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-18, -10)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("oriented_container/body/leg_4:flip_h") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("oriented_container/body/leg_5:flip_h") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("oriented_container/body/leg_5:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-2, -6)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("oriented_container/body/leg_6:position") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(18, -6)] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("oriented_container/body/leg_6:flip_h") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("oriented_container/body/leg_1:flip_h") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("oriented_container/body/leg_1:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-6, -6)] +} +tracks/9/type = "value" +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/path = NodePath("oriented_container/body/leg_2:flip_h") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/10/type = "value" +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/path = NodePath("oriented_container/body/leg_2:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(14, -4)] +} +tracks/11/type = "value" +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/path = NodePath("oriented_container/body/leg_3:flip_h") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/12/type = "value" +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/path = NodePath("oriented_container/body/leg_3:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(36, -4)] +} +tracks/13/type = "value" +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/path = NodePath("oriented_container/body/wing_1:flip_h") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/14/type = "value" +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/path = NodePath("oriented_container/body/wing_1:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(62, -10)] +} +tracks/15/type = "value" +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/path = NodePath("oriented_container/body/wing_2:flip_h") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/16/type = "value" +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/path = NodePath("oriented_container/body/wing_2:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(60, -6)] +} +tracks/17/type = "value" +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/path = NodePath("oriented_container/body/grab_ray:rotation") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [-3.14159] +} + +[sub_resource type="Animation" id="Animation_lsv7q"] length = 0.001 tracks/0/type = "value" tracks/0/imported = false tracks/0/enabled = true -tracks/0/path = NodePath("camera:zoom") +tracks/0/path = NodePath("oriented_container/body:flip_h") tracks/0/interp = 1 tracks/0/loop_wrap = true tracks/0/keys = { "times": PackedFloat32Array(0), "transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("oriented_container/body/leg_4:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), "update": 0, -"values": [Vector2(0.2, 0.2)] +"values": [Vector2(28, -4)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("oriented_container/body/leg_4:flip_h") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("oriented_container/body/leg_5:flip_h") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("oriented_container/body/leg_5:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(6, -4)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("oriented_container/body/leg_6:position") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-10, -6)] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("oriented_container/body/leg_6: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/leg_1:flip_h") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("oriented_container/body/leg_1:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(26, 0)] +} +tracks/9/type = "value" +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/path = NodePath("oriented_container/body/leg_2:flip_h") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/10/type = "value" +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/path = NodePath("oriented_container/body/leg_2:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(2, -4)] +} +tracks/11/type = "value" +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/path = NodePath("oriented_container/body/leg_3:flip_h") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/12/type = "value" +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/path = NodePath("oriented_container/body/leg_3:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-16, -6)] +} +tracks/13/type = "value" +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/path = NodePath("oriented_container/body/wing_1:flip_h") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/14/type = "value" +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/path = NodePath("oriented_container/body/wing_1:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(24, -6)] +} +tracks/15/type = "value" +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/path = NodePath("oriented_container/body/wing_2:flip_h") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/16/type = "value" +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/path = NodePath("oriented_container/body/wing_2:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(24, -6)] +} +tracks/17/type = "value" +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/path = NodePath("oriented_container/body/grab_ray:rotation") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] } -[sub_resource type="AnimationLibrary" id="AnimationLibrary_t0d07"] +[sub_resource type="Animation" id="Animation_ba4v1"] +resource_name = "right" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("oriented_container/body:flip_h") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("oriented_container/body/leg_4:position") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(28, -4)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("oriented_container/body/leg_4:flip_h") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("oriented_container/body/leg_5:flip_h") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [true] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("oriented_container/body/leg_5:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(6, -4)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("oriented_container/body/leg_6:position") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-10, -6)] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("oriented_container/body/leg_6: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/leg_1:flip_h") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("oriented_container/body/leg_1:position") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(26, 0)] +} +tracks/9/type = "value" +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/path = NodePath("oriented_container/body/leg_2:flip_h") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/10/type = "value" +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/path = NodePath("oriented_container/body/leg_2:position") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(2, -4)] +} +tracks/11/type = "value" +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/path = NodePath("oriented_container/body/leg_3:flip_h") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/12/type = "value" +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/path = NodePath("oriented_container/body/leg_3:position") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(-16, -6)] +} +tracks/13/type = "value" +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/path = NodePath("oriented_container/body/wing_1:flip_h") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/14/type = "value" +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/path = NodePath("oriented_container/body/wing_1:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(24, -6)] +} +tracks/15/type = "value" +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/path = NodePath("oriented_container/body/wing_2:flip_h") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [false] +} +tracks/16/type = "value" +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/path = NodePath("oriented_container/body/wing_2:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector2(24, -6)] +} +tracks/17/type = "value" +tracks/17/imported = false +tracks/17/enabled = true +tracks/17/path = NodePath("oriented_container/body/grab_ray:rotation") +tracks/17/interp = 1 +tracks/17/loop_wrap = true +tracks/17/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [0.0] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_2dakq"] _data = { -"RESET": SubResource("Animation_kwmth"), -"zoom_in": SubResource("Animation_gwu4b") +"RESET": SubResource("Animation_lsv7q"), +"left": SubResource("Animation_77oc2"), +"right": SubResource("Animation_ba4v1") } [node name="player" type="CharacterBody2D"] @@ -64,11 +1590,73 @@ zoom = Vector2(0.2, 0.2) [node name="oriented_container" type="Node2D" parent="."] -[node name="grab_ray" type="RayCast2D" parent="oriented_container"] +[node name="body" type="Sprite2D" parent="oriented_container"] +position = Vector2(2.08165e-12, 2.08165e-12) +scale = Vector2(0.5, 0.5) +texture = ExtResource("1_s33dc") +script = SubResource("GDScript_7pyoe") + +[node name="leg_4" type="Sprite2D" parent="oriented_container/body"] +show_behind_parent = true +position = Vector2(28, -4) +scale = Vector2(0.8, 0.8) +texture = ExtResource("4_cqlnm") +offset = Vector2(4.5, 14.5) +flip_h = true + +[node name="leg_5" type="Sprite2D" parent="oriented_container/body"] +show_behind_parent = true +position = Vector2(6, -4) +scale = Vector2(0.8, 0.8) +texture = ExtResource("4_cqlnm") +offset = Vector2(7, 9.5) +flip_h = true + +[node name="leg_6" type="Sprite2D" parent="oriented_container/body"] +show_behind_parent = true +position = Vector2(-10, -6) +rotation = 0.523599 +scale = Vector2(0.8, 0.8) +texture = ExtResource("4_cqlnm") +offset = Vector2(4.5, 12) +flip_h = true + +[node name="leg_1" type="Sprite2D" parent="oriented_container/body"] +position = Vector2(26, 0) +texture = ExtResource("4_cqlnm") +offset = Vector2(-10, 12) + +[node name="leg_2" type="Sprite2D" parent="oriented_container/body"] +position = Vector2(2, -4) +texture = ExtResource("4_cqlnm") +offset = Vector2(-8, 12) + +[node name="leg_3" type="Sprite2D" parent="oriented_container/body"] +position = Vector2(-16, -6) +texture = ExtResource("4_cqlnm") +offset = Vector2(-8, 12) + +[node name="wing_1" type="Sprite2D" parent="oriented_container/body"] +position = Vector2(24, -6) +texture = ExtResource("5_a0305") +offset = Vector2(-38, -4) + +[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) + +[node name="grab_ray" type="RayCast2D" parent="oriented_container/body"] +position = Vector2(-4.1633e-12, -4.1633e-12) +scale = Vector2(2, 2) target_position = Vector2(24, 0) -[node name="sprite" type="Sprite2D" parent="oriented_container"] -texture = ExtResource("1_s33dc") +[node name="animator" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_w7sbx") +} [node name="fx_animator" type="AnimationPlayer" parent="."] autoplay = "zoom_in" @@ -81,3 +1669,8 @@ script = ExtResource("4_jraxp") [node name="gliding_player" type="AudioStreamPlayer2D" parent="."] script = ExtResource("4_jraxp") + +[node name="killme" type="AnimationPlayer" parent="."] +libraries = { +"": SubResource("AnimationLibrary_2dakq") +} diff --git a/nodes/player/temp.png b/nodes/player/temp.png index 1302e2384d39b5068496a82f296e9a3e1ecde4d0..02585fcff7ee369bce4521c647e88c8fe1054e51 100644 GIT binary patch literal 5781 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 T;El#z00000NkvXXu0mjfm(fT$ delta 1052 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 Y0@DnjXPgIy