diff --git a/2d/skeleton/README.md b/2d/skeleton/README.md new file mode 100644 index 00000000..644b9800 --- /dev/null +++ b/2d/skeleton/README.md @@ -0,0 +1,15 @@ +# Skeleton2D Demo + +This demo shows how to create a rigged and animated character in 2D using +Godot's Skeleton2D node. There are several movement-related animations and +there is a simple character controller that controls the animations. + +Language: GDScript + +Renderer: GLES 2 + +## Licenses + +GBot character Copyright © circa 2020 Andreas Esau, MIT License. + +Initial rigging and animating Copyright © 2020 RustyStriker, MIT License. diff --git a/2d/skeleton/icon.png b/2d/skeleton/icon.png new file mode 100644 index 00000000..ee34f62f Binary files /dev/null and b/2d/skeleton/icon.png differ diff --git a/2d/skeleton/icon.png.import b/2d/skeleton/icon.png.import new file mode 100644 index 00000000..96cbf462 --- /dev/null +++ b/2d/skeleton/icon.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://icon.png" +dest_files=[ "res://.import/icon.png-487276ed1e3a0c39cad0279d744ee560.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/2d/skeleton/level.tscn b/2d/skeleton/level.tscn new file mode 100644 index 00000000..0c888323 --- /dev/null +++ b/2d/skeleton/level.tscn @@ -0,0 +1,353 @@ +[gd_scene load_steps=18 format=2] + +[ext_resource path="res://level/level.gd" type="Script" id=1] +[ext_resource path="res://level/tileset/tiles_demo.png" type="Texture" id=2] +[ext_resource path="res://level/background.tscn" type="PackedScene" id=3] +[ext_resource path="res://player/player.tscn" type="PackedScene" id=4] + +[sub_resource type="ConvexPolygonShape2D" id=1] +points = PoolVector2Array( 0, 6, 32, 6, 32, 32, 0, 32 ) + +[sub_resource type="ConvexPolygonShape2D" id=2] +points = PoolVector2Array( 0, 6, 28, 6, 28, 32, 0, 32 ) + +[sub_resource type="ConvexPolygonShape2D" id=3] +points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 ) + +[sub_resource type="ConvexPolygonShape2D" id=4] +points = PoolVector2Array( 0, 6, 32, 6, 32, 32, 0, 32 ) + +[sub_resource type="ConvexPolygonShape2D" id=5] +points = PoolVector2Array( 32, 38, 32, 64, 0, 64, 0, 6 ) + +[sub_resource type="ConvexPolygonShape2D" id=6] +points = PoolVector2Array( 0, 0, 28, 0, 28, 32, 0, 32 ) + +[sub_resource type="ConvexPolygonShape2D" id=7] +points = PoolVector2Array( 28, 6, 32, 6, 32, 32, 0, 32, 0, 0, 28, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=8] +points = PoolVector2Array( 0, 6, 32, 6, 32, 32, 0, 32 ) + +[sub_resource type="ConvexPolygonShape2D" id=9] +points = PoolVector2Array( 0, 6, 28, 6, 28, 32, 0, 32 ) + +[sub_resource type="ConvexPolygonShape2D" id=10] +points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 ) + +[sub_resource type="ConvexPolygonShape2D" id=11] +points = PoolVector2Array( 0, 0, 32, 0, 32, 24, 0, 24 ) + +[sub_resource type="ConvexPolygonShape2D" id=12] +points = PoolVector2Array( 0, 0, 28, 0, 28, 24, 0, 24 ) + +[sub_resource type="TileSet" id=13] +0/name = "ground" +0/texture = ExtResource( 2 ) +0/tex_offset = Vector2( 0, 0 ) +0/modulate = Color( 1, 1, 1, 1 ) +0/region = Rect2( 0, 0, 32, 32 ) +0/tile_mode = 0 +0/occluder_offset = Vector2( 0, 0 ) +0/navigation_offset = Vector2( 0, 0 ) +0/shape_offset = Vector2( 0, 0 ) +0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +0/shape = SubResource( 1 ) +0/shape_one_way = false +0/shape_one_way_margin = 1.0 +0/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 1 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +0/z_index = 0 +1/name = "ground_end" +1/texture = ExtResource( 2 ) +1/tex_offset = Vector2( 0, 0 ) +1/modulate = Color( 1, 1, 1, 1 ) +1/region = Rect2( 32, 0, 32, 32 ) +1/tile_mode = 0 +1/occluder_offset = Vector2( 0, 0 ) +1/navigation_offset = Vector2( 0, 0 ) +1/shape_offset = Vector2( 0, 0 ) +1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +1/shape = SubResource( 2 ) +1/shape_one_way = false +1/shape_one_way_margin = 1.0 +1/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 2 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +1/z_index = 0 +2/name = "slope" +2/texture = ExtResource( 2 ) +2/tex_offset = Vector2( 0, 0 ) +2/modulate = Color( 1, 1, 1, 1 ) +2/region = Rect2( 64, 64, 32, 64 ) +2/tile_mode = 0 +2/occluder_offset = Vector2( 0, 0 ) +2/navigation_offset = Vector2( 0, 0 ) +2/shape_offset = Vector2( 0, 0 ) +2/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +2/shape = SubResource( 5 ) +2/shape_one_way = false +2/shape_one_way_margin = 1.0 +2/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 5 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +2/z_index = 0 +3/name = "wall" +3/texture = ExtResource( 2 ) +3/tex_offset = Vector2( 0, 0 ) +3/modulate = Color( 1, 1, 1, 1 ) +3/region = Rect2( 32, 32, 32, 32 ) +3/tile_mode = 0 +3/occluder_offset = Vector2( 0, 0 ) +3/navigation_offset = Vector2( 0, 0 ) +3/shape_offset = Vector2( 0, 0 ) +3/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +3/shape = SubResource( 6 ) +3/shape_one_way = false +3/shape_one_way_margin = 1.0 +3/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 6 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +3/z_index = 0 +4/name = "slope_top" +4/texture = ExtResource( 2 ) +4/tex_offset = Vector2( 0, 0 ) +4/modulate = Color( 1, 1, 1, 1 ) +4/region = Rect2( 32, 64, 32, 32 ) +4/tile_mode = 0 +4/occluder_offset = Vector2( 0, 0 ) +4/navigation_offset = Vector2( 0, 0 ) +4/shape_offset = Vector2( 0, 0 ) +4/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +4/shape = SubResource( 7 ) +4/shape_one_way = false +4/shape_one_way_margin = 1.0 +4/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 7 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +4/z_index = 0 +5/name = "one_way" +5/texture = ExtResource( 2 ) +5/tex_offset = Vector2( 0, 0 ) +5/modulate = Color( 1, 1, 1, 1 ) +5/region = Rect2( 64, 0, 32, 32 ) +5/tile_mode = 0 +5/occluder_offset = Vector2( 0, 0 ) +5/navigation_offset = Vector2( 0, 0 ) +5/shape_offset = Vector2( 0, 0 ) +5/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +5/shape = SubResource( 8 ) +5/shape_one_way = true +5/shape_one_way_margin = 1.0 +5/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": true, +"one_way_margin": 1.0, +"shape": SubResource( 8 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +5/z_index = 0 +6/name = "one_way_end" +6/texture = ExtResource( 2 ) +6/tex_offset = Vector2( 0, 0 ) +6/modulate = Color( 1, 1, 1, 1 ) +6/region = Rect2( 96, 0, 32, 32 ) +6/tile_mode = 0 +6/occluder_offset = Vector2( 0, 0 ) +6/navigation_offset = Vector2( 0, 0 ) +6/shape_offset = Vector2( 0, 0 ) +6/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +6/shape = SubResource( 9 ) +6/shape_one_way = true +6/shape_one_way_margin = 1.0 +6/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": true, +"one_way_margin": 1.0, +"shape": SubResource( 9 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +6/z_index = 0 +7/name = "rock" +7/texture = ExtResource( 2 ) +7/tex_offset = Vector2( 0, 0 ) +7/modulate = Color( 1, 1, 1, 1 ) +7/region = Rect2( 0, 32, 32, 32 ) +7/tile_mode = 0 +7/occluder_offset = Vector2( 0, 0 ) +7/navigation_offset = Vector2( 0, 0 ) +7/shape_offset = Vector2( 0, 0 ) +7/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +7/shape = SubResource( 10 ) +7/shape_one_way = false +7/shape_one_way_margin = 1.0 +7/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 10 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +7/z_index = 0 +8/name = "bottom" +8/texture = ExtResource( 2 ) +8/tex_offset = Vector2( 0, 0 ) +8/modulate = Color( 1, 1, 1, 1 ) +8/region = Rect2( 192, 32, 32, 32 ) +8/tile_mode = 0 +8/occluder_offset = Vector2( 0, 0 ) +8/navigation_offset = Vector2( 0, 0 ) +8/shape_offset = Vector2( 0, 0 ) +8/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +8/shape = SubResource( 11 ) +8/shape_one_way = false +8/shape_one_way_margin = 1.0 +8/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 11 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +8/z_index = 0 +9/name = "bottom_end" +9/texture = ExtResource( 2 ) +9/tex_offset = Vector2( 0, 0 ) +9/modulate = Color( 1, 1, 1, 1 ) +9/region = Rect2( 224, 32, 32, 32 ) +9/tile_mode = 0 +9/occluder_offset = Vector2( 0, 0 ) +9/navigation_offset = Vector2( 0, 0 ) +9/shape_offset = Vector2( 0, 0 ) +9/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +9/shape = SubResource( 12 ) +9/shape_one_way = false +9/shape_one_way_margin = 1.0 +9/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 12 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +9/z_index = 0 +10/name = "bottom_corner" +10/texture = ExtResource( 2 ) +10/tex_offset = Vector2( 0, 0 ) +10/modulate = Color( 1, 1, 1, 1 ) +10/region = Rect2( 160, 32, 32, 32 ) +10/tile_mode = 0 +10/occluder_offset = Vector2( 0, 0 ) +10/navigation_offset = Vector2( 0, 0 ) +10/shape_offset = Vector2( 0, 0 ) +10/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +10/shape = SubResource( 3 ) +10/shape_one_way = false +10/shape_one_way_margin = 1.0 +10/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 3 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +10/z_index = 0 +11/name = "tree_trunk_0" +11/texture = ExtResource( 2 ) +11/tex_offset = Vector2( 0, 0 ) +11/modulate = Color( 1, 1, 1, 1 ) +11/region = Rect2( 128, 64, 32, 32 ) +11/tile_mode = 0 +11/occluder_offset = Vector2( 0, 0 ) +11/navigation_offset = Vector2( 0, 0 ) +11/shape_offset = Vector2( 0, 0 ) +11/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +11/shape_one_way = false +11/shape_one_way_margin = 0.0 +11/shapes = [ ] +11/z_index = 0 +12/name = "tree_trunk_1" +12/texture = ExtResource( 2 ) +12/tex_offset = Vector2( 0, 0 ) +12/modulate = Color( 1, 1, 1, 1 ) +12/region = Rect2( 128, 32, 32, 32 ) +12/tile_mode = 0 +12/occluder_offset = Vector2( 0, 0 ) +12/navigation_offset = Vector2( 0, 0 ) +12/shape_offset = Vector2( 0, 0 ) +12/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +12/shape_one_way = false +12/shape_one_way_margin = 0.0 +12/shapes = [ ] +12/z_index = 0 +13/name = "tree_base" +13/texture = ExtResource( 2 ) +13/tex_offset = Vector2( 0, 0 ) +13/modulate = Color( 1, 1, 1, 1 ) +13/region = Rect2( 128, 96, 32, 32 ) +13/tile_mode = 0 +13/occluder_offset = Vector2( 0, 0 ) +13/navigation_offset = Vector2( 0, 0 ) +13/shape_offset = Vector2( 0, 0 ) +13/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +13/shape = SubResource( 4 ) +13/shape_one_way = false +13/shape_one_way_margin = 1.0 +13/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 4 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +13/z_index = 0 +14/name = "tree_top" +14/texture = ExtResource( 2 ) +14/tex_offset = Vector2( 0, 0 ) +14/modulate = Color( 1, 1, 1, 1 ) +14/region = Rect2( 128, 0, 32, 32 ) +14/tile_mode = 0 +14/occluder_offset = Vector2( 0, 0 ) +14/navigation_offset = Vector2( 0, 0 ) +14/shape_offset = Vector2( 0, 0 ) +14/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +14/shape_one_way = false +14/shape_one_way_margin = 0.0 +14/shapes = [ ] +14/z_index = 0 + +[node name="Level" type="Node2D"] +pause_mode = 1 +script = ExtResource( 1 ) + +[node name="TileMap" type="TileMap" parent="."] +tile_set = SubResource( 13 ) +cell_size = Vector2( 32, 32 ) +format = 1 +tile_data = PoolIntArray( -65546, 536870913, 0, -65545, 1, 0, -131044, 536870913, 0, -131043, 1, 0, -10, 536870915, 0, -9, 3, 0, -65508, 536870915, 0, -65507, 3, 0, 65526, 536870915, 0, 65527, 3, 0, 28, 536870915, 0, 29, 3, 0, 131062, 536870915, 0, 131063, 3, 0, 131069, 536870918, 0, 131070, 5, 0, 131071, 5, 0, 65536, 5, 0, 65537, 5, 0, 65538, 5, 0, 65539, 5, 0, 65540, 6, 0, 65564, 536870915, 0, 65565, 3, 0, 196598, 536870915, 0, 196599, 3, 0, 131080, 536870913, 0, 131081, 0, 0, 131082, 0, 0, 131083, 0, 0, 131084, 0, 0, 131085, 1, 0, 131100, 536870915, 0, 131101, 3, 0, 262134, 536870915, 0, 262135, 3, 0, 196616, 536870921, 0, 196617, 8, 0, 196618, 8, 0, 196619, 8, 0, 196620, 8, 0, 196621, 9, 0, 196626, 536870913, 0, 196627, 0, 0, 196628, 0, 0, 196629, 0, 0, 196630, 0, 0, 196631, 0, 0, 196632, 0, 0, 196633, 0, 0, 196634, 0, 0, 196635, 0, 0, 196636, 536870916, 0, 196637, 3, 0, 327670, 536870915, 0, 327671, 3, 0, 262149, 536870918, 0, 262150, 6, 0, 262162, 536870921, 0, 262163, 536870920, 0, 262164, 536870920, 0, 262165, 536870920, 0, 262166, 536870920, 0, 262167, 536870922, 0, 262168, 7, 0, 262169, 7, 0, 262170, 7, 0, 262171, 7, 0, 262172, 7, 0, 262173, 3, 0, 393206, 536870915, 0, 393207, 3, 0, 327682, 536870918, 0, 327683, 6, 0, 327703, 536870921, 0, 327704, 536870920, 0, 327705, 536870922, 0, 327706, 7, 0, 327707, 7, 0, 327708, 7, 0, 327709, 3, 0, 458742, 536870915, 0, 458743, 4, 0, 458744, 0, 0, 458745, 0, 0, 458746, 1, 0, 393241, 536870921, 0, 393242, 536870920, 0, 393243, 536870920, 0, 393244, 536870922, 0, 393245, 3, 0, 524278, 536870915, 0, 524279, 536870919, 0, 524280, 536870919, 0, 524281, 536870919, 0, 524282, 3, 0, 458754, 536870913, 0, 458755, 0, 0, 458756, 0, 0, 458757, 2, 0, 458764, 536870913, 0, 458765, 1, 0, 458780, 536870915, 0, 458781, 3, 0, 589814, 536870915, 0, 589815, 536870919, 0, 589816, 536870919, 0, 589817, 536870919, 0, 589818, 3, 0, 524290, 536870915, 0, 524291, 7, 0, 524292, 7, 0, 524294, 536870912, 0, 524295, 536870912, 0, 524296, 536870912, 0, 524297, 536870912, 0, 524298, 536870912, 0, 524299, 536870912, 0, 524300, 536870916, 0, 524301, 3, 0, 524316, 536870915, 0, 524317, 3, 0, 655350, 536870915, 0, 655351, 536870919, 0, 655352, 536870919, 0, 655353, 536870919, 0, 655354, 3, 0, 589826, 536870915, 0, 589827, 7, 0, 589828, 7, 0, 589829, 7, 0, 589830, 7, 0, 589831, 7, 0, 589832, 7, 0, 589833, 7, 0, 589834, 7, 0, 589835, 7, 0, 589836, 7, 0, 589837, 4, 0, 589838, 0, 0, 589839, 1, 0, 589841, 536870918, 0, 589842, 5, 0, 589843, 6, 0, 589852, 536870915, 0, 589853, 3, 0, 720886, 536870915, 0, 720887, 536870919, 0, 720888, 536870919, 0, 720889, 536870919, 0, 720890, 3, 0, 655362, 536870921, 0, 655363, 536870920, 0, 655364, 536870920, 0, 655365, 536870920, 0, 655366, 536870920, 0, 655367, 536870920, 0, 655368, 536870920, 0, 655369, 536870920, 0, 655370, 536870920, 0, 655371, 536870920, 0, 655372, 536870920, 0, 655373, 536870920, 0, 655374, 536870920, 0, 655375, 9, 0, 655381, 536870918, 0, 655382, 5, 0, 655383, 6, 0, 655388, 536870915, 0, 655389, 3, 0, 786422, 536870915, 0, 786423, 536870919, 0, 786424, 536870919, 0, 786425, 536870919, 0, 786426, 3, 0, 720924, 536870915, 0, 720925, 3, 0, 851958, 536870915, 0, 851959, 536870919, 0, 851960, 536870919, 0, 851961, 536870919, 0, 851962, 3, 0, 786456, 536870918, 0, 786457, 536870917, 0, 786458, 6, 0, 786460, 536870915, 0, 786461, 3, 0, 917494, 536870915, 0, 917495, 536870919, 0, 917496, 536870919, 0, 917497, 536870919, 0, 917498, 4, 0, 917499, 0, 0, 917500, 0, 0, 917501, 0, 0, 917502, 0, 0, 917503, 0, 0, 851968, 0, 0, 851969, 1, 0, 851996, 536870915, 0, 851997, 3, 0, 983030, 536870915, 0, 983031, 536870919, 0, 983032, 536870919, 0, 983033, 536870919, 0, 983034, 536870919, 0, 983035, 536870919, 0, 983036, 536870919, 0, 983037, 536870919, 0, 983038, 536870919, 0, 983039, 536870919, 0, 917504, 536870919, 0, 917505, 3, 0, 917526, 536870913, 0, 917527, 536870912, 0, 917528, 536870912, 0, 917529, 0, 0, 917530, 536870912, 0, 917531, 536870912, 0, 917532, 536870916, 0, 917533, 3, 0, 1048566, 536870915, 0, 1048567, 536870919, 0, 1048568, 536870919, 0, 1048569, 536870919, 0, 1048570, 536870919, 0, 1048571, 536870919, 0, 1048572, 536870919, 0, 1048573, 536870919, 0, 1048574, 536870919, 0, 1048575, 536870919, 0, 983040, 536870919, 0, 983041, 3, 0, 983057, 536870918, 0, 983058, 5, 0, 983059, 6, 0, 983062, 536870915, 0, 983063, 7, 0, 983064, 7, 0, 983065, 7, 0, 983066, 7, 0, 983067, 7, 0, 983068, 7, 0, 983069, 3, 0, 1114102, 536870915, 0, 1114103, 536870919, 0, 1114104, 536870919, 0, 1114105, 536870919, 0, 1114106, 536870919, 0, 1114107, 536870919, 0, 1114108, 536870919, 0, 1114109, 536870919, 0, 1114110, 536870919, 0, 1114111, 536870919, 0, 1048576, 536870919, 0, 1048577, 3, 0, 1048579, 536870926, 0, 1048598, 536870915, 0, 1048599, 7, 0, 1048600, 7, 0, 1048601, 7, 0, 1048602, 7, 0, 1048603, 7, 0, 1048604, 7, 0, 1048605, 3, 0, 1179638, 536870915, 0, 1179639, 536870919, 0, 1179640, 536870919, 0, 1179641, 536870919, 0, 1179642, 536870919, 0, 1179643, 536870919, 0, 1179644, 536870919, 0, 1179645, 536870919, 0, 1179646, 536870919, 0, 1179647, 536870919, 0, 1114112, 536870919, 0, 1114113, 4, 0, 1114114, 0, 0, 1114115, 536870925, 0, 1114116, 0, 0, 1114117, 2, 0, 1114123, 536870926, 0, 1114126, 536870918, 0, 1114127, 5, 0, 1114128, 6, 0, 1114133, 536870914, 0, 1114134, 536870916, 0, 1114135, 7, 0, 1114136, 7, 0, 1114137, 7, 0, 1114138, 7, 0, 1114139, 7, 0, 1114140, 7, 0, 1114141, 3, 0, 1245174, 536870915, 0, 1245175, 536870919, 0, 1245176, 536870919, 0, 1245177, 536870919, 0, 1245178, 536870919, 0, 1245179, 536870919, 0, 1245180, 536870919, 0, 1245181, 536870919, 0, 1245182, 536870919, 0, 1245183, 536870919, 0, 1179648, 536870919, 0, 1179649, 536870919, 0, 1179650, 536870919, 0, 1179651, 536870919, 0, 1179652, 7, 0, 1179654, 2, 0, 1179658, 536870913, 0, 1179659, 536870925, 0, 1179660, 1, 0, 1179668, 536870914, 0, 1179670, 7, 0, 1179671, 7, 0, 1179672, 7, 0, 1179673, 7, 0, 1179674, 7, 0, 1179675, 7, 0, 1179676, 7, 0, 1179677, 3, 0, 1310710, 536870915, 0, 1310711, 536870919, 0, 1310712, 536870919, 0, 1310713, 536870919, 0, 1310714, 536870919, 0, 1310715, 536870919, 0, 1310716, 536870919, 0, 1310717, 536870919, 0, 1310718, 536870919, 0, 1310719, 536870919, 0, 1245184, 536870919, 0, 1245185, 536870919, 0, 1245186, 536870919, 0, 1245187, 536870919, 0, 1245188, 536870919, 0, 1245189, 7, 0, 1245191, 2, 0, 1245194, 536870915, 0, 1245195, 7, 0, 1245196, 3, 0, 1245203, 536870914, 0, 1245205, 7, 0, 1245206, 7, 0, 1245207, 7, 0, 1245208, 7, 0, 1245209, 7, 0, 1245210, 7, 0, 1245211, 7, 0, 1245212, 7, 0, 1245213, 3, 0, 1376246, 536870915, 0, 1376247, 536870919, 0, 1376248, 536870919, 0, 1376249, 536870919, 0, 1376250, 536870919, 0, 1376251, 536870919, 0, 1376252, 536870919, 0, 1376253, 536870919, 0, 1376254, 536870919, 0, 1376255, 536870919, 0, 1310720, 536870919, 0, 1310721, 536870919, 0, 1310722, 536870919, 0, 1310723, 536870919, 0, 1310724, 536870919, 0, 1310725, 536870919, 0, 1310726, 7, 0, 1310728, 536870912, 0, 1310729, 536870912, 0, 1310730, 536870916, 0, 1310731, 7, 0, 1310732, 4, 0, 1310733, 0, 0, 1310734, 0, 0, 1310735, 0, 0, 1310736, 0, 0, 1310737, 0, 0, 1310738, 536870912, 0, 1310740, 7, 0, 1310741, 7, 0, 1310742, 7, 0, 1310743, 7, 0, 1310744, 7, 0, 1310745, 7, 0, 1310746, 7, 0, 1310747, 7, 0, 1310748, 7, 0, 1310749, 3, 0, 1441782, 536870921, 0, 1441783, 536870920, 0, 1441784, 536870920, 0, 1441785, 536870920, 0, 1441786, 536870920, 0, 1441787, 536870920, 0, 1441788, 536870920, 0, 1441789, 536870920, 0, 1441790, 536870920, 0, 1441791, 536870920, 0, 1376256, 536870920, 0, 1376257, 536870920, 0, 1376258, 536870920, 0, 1376259, 536870920, 0, 1376260, 536870920, 0, 1376261, 536870920, 0, 1376262, 536870920, 0, 1376263, 536870920, 0, 1376264, 536870920, 0, 1376265, 536870920, 0, 1376266, 536870920, 0, 1376267, 536870920, 0, 1376268, 536870920, 0, 1376269, 536870920, 0, 1376270, 536870920, 0, 1376271, 536870920, 0, 1376272, 536870920, 0, 1376273, 536870920, 0, 1376274, 536870920, 0, 1376275, 536870920, 0, 1376276, 536870920, 0, 1376277, 536870920, 0, 1376278, 536870920, 0, 1376279, 536870920, 0, 1376280, 536870920, 0, 1376281, 536870920, 0, 1376282, 536870920, 0, 1376283, 536870920, 0, 1376284, 8, 0, 1376285, 9, 0 ) + +[node name="ParallaxBackground" parent="." instance=ExtResource( 3 )] + +[node name="SkeletalPlayer" parent="." instance=ExtResource( 4 )] +position = Vector2( 90, 546 ) diff --git a/2d/skeleton/level/background.tscn b/2d/skeleton/level/background.tscn new file mode 100644 index 00000000..6fae33da --- /dev/null +++ b/2d/skeleton/level/background.tscn @@ -0,0 +1,174 @@ +[gd_scene load_steps=7 format=2] + +[ext_resource path="res://level/background/distant_platforms_2.png" type="Texture" id=1] +[ext_resource path="res://level/background/sky.png" type="Texture" id=2] +[ext_resource path="res://level/background/cloud_1.png" type="Texture" id=3] +[ext_resource path="res://level/background/cloud_2.png" type="Texture" id=4] +[ext_resource path="res://level/background/cloud_3.png" type="Texture" id=5] +[ext_resource path="res://level/background/distant_platforms_1.png" type="Texture" id=6] + +[node name="ParallaxBackground" type="ParallaxBackground"] +scroll_base_scale = Vector2( 0.4, 0 ) + +[node name="Sky" type="ParallaxLayer" parent="."] +motion_mirroring = Vector2( 400, 0 ) + +[node name="Sprite" type="Sprite" parent="Sky"] +scale = Vector2( 64, 0.94 ) +texture = ExtResource( 2 ) +centered = false + +[node name="Clouds" type="ParallaxLayer" parent="."] +motion_scale = Vector2( 0.1, 1 ) +motion_offset = Vector2( -550, 0 ) + +[node name="CloudGroup1" type="Node2D" parent="Clouds"] +position = Vector2( -780, 0 ) + +[node name="Sprite1" type="Sprite" parent="Clouds/CloudGroup1"] +position = Vector2( -200, 120 ) +texture = ExtResource( 3 ) +centered = false + +[node name="Sprite2" type="Sprite" parent="Clouds/CloudGroup1"] +position = Vector2( 100, 10 ) +texture = ExtResource( 3 ) +centered = false + +[node name="Sprite3" type="Sprite" parent="Clouds/CloudGroup1"] +position = Vector2( -60, 40 ) +texture = ExtResource( 4 ) +centered = false + +[node name="Sprite4" type="Sprite" parent="Clouds/CloudGroup1"] +position = Vector2( 150, 65 ) +texture = ExtResource( 4 ) +centered = false + +[node name="Sprite5" type="Sprite" parent="Clouds/CloudGroup1"] +position = Vector2( 15, 75 ) +texture = ExtResource( 5 ) +centered = false + +[node name="Sprite6" type="Sprite" parent="Clouds/CloudGroup1"] +position = Vector2( 225, 35 ) +texture = ExtResource( 5 ) +centered = false + +[node name="CloudGroup2" type="Node2D" parent="Clouds"] + +[node name="Sprite1" type="Sprite" parent="Clouds/CloudGroup2"] +position = Vector2( -200, 120 ) +texture = ExtResource( 3 ) +centered = false + +[node name="Sprite2" type="Sprite" parent="Clouds/CloudGroup2"] +position = Vector2( 100, 10 ) +texture = ExtResource( 3 ) +centered = false + +[node name="Sprite3" type="Sprite" parent="Clouds/CloudGroup2"] +position = Vector2( -60, 40 ) +texture = ExtResource( 4 ) +centered = false + +[node name="Sprite4" type="Sprite" parent="Clouds/CloudGroup2"] +position = Vector2( 150, 65 ) +texture = ExtResource( 4 ) +centered = false + +[node name="Sprite5" type="Sprite" parent="Clouds/CloudGroup2"] +position = Vector2( 15, 75 ) +texture = ExtResource( 5 ) +centered = false + +[node name="Sprite6" type="Sprite" parent="Clouds/CloudGroup2"] +position = Vector2( 225, 35 ) +texture = ExtResource( 5 ) +centered = false + +[node name="CloudGroup3" type="Node2D" parent="Clouds"] +position = Vector2( 390, 0 ) + +[node name="Sprite1" type="Sprite" parent="Clouds/CloudGroup3"] +position = Vector2( -200, 120 ) +texture = ExtResource( 3 ) +centered = false + +[node name="Sprite2" type="Sprite" parent="Clouds/CloudGroup3"] +position = Vector2( 100, 10 ) +texture = ExtResource( 3 ) +centered = false + +[node name="Sprite3" type="Sprite" parent="Clouds/CloudGroup3"] +position = Vector2( -60, 40 ) +texture = ExtResource( 4 ) +centered = false + +[node name="Sprite4" type="Sprite" parent="Clouds/CloudGroup3"] +position = Vector2( 150, 65 ) +texture = ExtResource( 4 ) +centered = false + +[node name="Sprite5" type="Sprite" parent="Clouds/CloudGroup3"] +position = Vector2( 15, 75 ) +texture = ExtResource( 5 ) +centered = false + +[node name="Sprite6" type="Sprite" parent="Clouds/CloudGroup3"] +position = Vector2( 225, 35 ) +texture = ExtResource( 5 ) +centered = false + +[node name="CloudGroup4" type="Node2D" parent="Clouds"] +position = Vector2( 780, 0 ) + +[node name="Sprite1" type="Sprite" parent="Clouds/CloudGroup4"] +position = Vector2( -200, 120 ) +texture = ExtResource( 3 ) +centered = false + +[node name="Sprite2" type="Sprite" parent="Clouds/CloudGroup4"] +position = Vector2( 100, 10 ) +texture = ExtResource( 3 ) +centered = false + +[node name="Sprite3" type="Sprite" parent="Clouds/CloudGroup4"] +position = Vector2( -60, 40 ) +texture = ExtResource( 4 ) +centered = false + +[node name="Sprite4" type="Sprite" parent="Clouds/CloudGroup4"] +position = Vector2( 150, 65 ) +texture = ExtResource( 4 ) +centered = false + +[node name="Sprite5" type="Sprite" parent="Clouds/CloudGroup4"] +position = Vector2( 15, 75 ) +texture = ExtResource( 5 ) +centered = false + +[node name="Sprite6" type="Sprite" parent="Clouds/CloudGroup4"] +position = Vector2( 225, 35 ) +texture = ExtResource( 5 ) +centered = false + +[node name="Mountains2" type="ParallaxLayer" parent="."] +position = Vector2( 0, 243 ) +motion_scale = Vector2( 0.2, 1 ) + +[node name="Sprite" type="Sprite" parent="Mountains2"] +position = Vector2( 0, -64 ) +texture = ExtResource( 1 ) +region_enabled = true +region_rect = Rect2( 0, 0, 2048, 128 ) + +[node name="Mountains1" type="ParallaxLayer" parent="."] +position = Vector2( 0, 246 ) +motion_scale = Vector2( 0.4, 1 ) + +[node name="Sprite" type="Sprite" parent="Mountains1"] +position = Vector2( 0, -64 ) +texture = ExtResource( 6 ) +region_enabled = true +region_rect = Rect2( 0, 0, 2048, 128 ) diff --git a/2d/skeleton/level/background/cloud_1.png b/2d/skeleton/level/background/cloud_1.png new file mode 100644 index 00000000..5f01d1b8 Binary files /dev/null and b/2d/skeleton/level/background/cloud_1.png differ diff --git a/2d/skeleton/level/background/cloud_1.png.import b/2d/skeleton/level/background/cloud_1.png.import new file mode 100644 index 00000000..8c7c5739 --- /dev/null +++ b/2d/skeleton/level/background/cloud_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/cloud_1.png-d9f3821e0d58b8b79ac7a8bc81287ae8.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://level/background/cloud_1.png" +dest_files=[ "res://.import/cloud_1.png-d9f3821e0d58b8b79ac7a8bc81287ae8.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/2d/skeleton/level/background/cloud_2.png b/2d/skeleton/level/background/cloud_2.png new file mode 100644 index 00000000..68c985f2 Binary files /dev/null and b/2d/skeleton/level/background/cloud_2.png differ diff --git a/2d/skeleton/level/background/cloud_2.png.import b/2d/skeleton/level/background/cloud_2.png.import new file mode 100644 index 00000000..a3c849f9 --- /dev/null +++ b/2d/skeleton/level/background/cloud_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/cloud_2.png-1b2bb3f73839db8c5ad1d01ad2876ab2.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://level/background/cloud_2.png" +dest_files=[ "res://.import/cloud_2.png-1b2bb3f73839db8c5ad1d01ad2876ab2.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/2d/skeleton/level/background/cloud_3.png b/2d/skeleton/level/background/cloud_3.png new file mode 100644 index 00000000..998d6ff0 Binary files /dev/null and b/2d/skeleton/level/background/cloud_3.png differ diff --git a/2d/skeleton/level/background/cloud_3.png.import b/2d/skeleton/level/background/cloud_3.png.import new file mode 100644 index 00000000..a1485bdd --- /dev/null +++ b/2d/skeleton/level/background/cloud_3.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/cloud_3.png-a4ce274fb6c38e3b05e8f88cf8cfffb6.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://level/background/cloud_3.png" +dest_files=[ "res://.import/cloud_3.png-a4ce274fb6c38e3b05e8f88cf8cfffb6.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/2d/skeleton/level/background/distant_platforms_1.png b/2d/skeleton/level/background/distant_platforms_1.png new file mode 100644 index 00000000..a513c820 Binary files /dev/null and b/2d/skeleton/level/background/distant_platforms_1.png differ diff --git a/2d/skeleton/level/background/distant_platforms_1.png.import b/2d/skeleton/level/background/distant_platforms_1.png.import new file mode 100644 index 00000000..f780334c --- /dev/null +++ b/2d/skeleton/level/background/distant_platforms_1.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/distant_platforms_1.png-34bd3c6d35ad3a7b690f0c018ca8743f.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://level/background/distant_platforms_1.png" +dest_files=[ "res://.import/distant_platforms_1.png-34bd3c6d35ad3a7b690f0c018ca8743f.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/2d/skeleton/level/background/distant_platforms_2.png b/2d/skeleton/level/background/distant_platforms_2.png new file mode 100644 index 00000000..da67ebe7 Binary files /dev/null and b/2d/skeleton/level/background/distant_platforms_2.png differ diff --git a/2d/skeleton/level/background/distant_platforms_2.png.import b/2d/skeleton/level/background/distant_platforms_2.png.import new file mode 100644 index 00000000..62029e5f --- /dev/null +++ b/2d/skeleton/level/background/distant_platforms_2.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/distant_platforms_2.png-2ecd927ea77506f4ec1f3533e13d711a.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://level/background/distant_platforms_2.png" +dest_files=[ "res://.import/distant_platforms_2.png-2ecd927ea77506f4ec1f3533e13d711a.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/2d/skeleton/level/background/sky.png b/2d/skeleton/level/background/sky.png new file mode 100644 index 00000000..13ba7b6c Binary files /dev/null and b/2d/skeleton/level/background/sky.png differ diff --git a/2d/skeleton/level/background/sky.png.import b/2d/skeleton/level/background/sky.png.import new file mode 100644 index 00000000..d0b70e09 --- /dev/null +++ b/2d/skeleton/level/background/sky.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/sky.png-c2b26f59be93d20195841091d4bd6a50.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://level/background/sky.png" +dest_files=[ "res://.import/sky.png-c2b26f59be93d20195841091d4bd6a50.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=1 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/2d/skeleton/level/level.gd b/2d/skeleton/level/level.gd new file mode 100644 index 00000000..5fdfeb75 --- /dev/null +++ b/2d/skeleton/level/level.gd @@ -0,0 +1,15 @@ +extends Node2D + +const LIMIT_LEFT = -315 +const LIMIT_TOP = -250 +const LIMIT_RIGHT = 955 +const LIMIT_BOTTOM = 690 + +func _ready(): + for child in get_children(): + if child is Player: + var camera = child.get_node(@"Camera2D") + camera.limit_left = LIMIT_LEFT + camera.limit_top = LIMIT_TOP + camera.limit_right = LIMIT_RIGHT + camera.limit_bottom = LIMIT_BOTTOM diff --git a/2d/skeleton/level/tileset/tiles_demo.png b/2d/skeleton/level/tileset/tiles_demo.png new file mode 100644 index 00000000..bbb7d44a Binary files /dev/null and b/2d/skeleton/level/tileset/tiles_demo.png differ diff --git a/2d/skeleton/level/tileset/tiles_demo.png.import b/2d/skeleton/level/tileset/tiles_demo.png.import new file mode 100644 index 00000000..8869f90b --- /dev/null +++ b/2d/skeleton/level/tileset/tiles_demo.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/tiles_demo.png-68724c3ed5763f2cba827c6d71224f19.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://level/tileset/tiles_demo.png" +dest_files=[ "res://.import/tiles_demo.png-68724c3ed5763f2cba827c6d71224f19.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=false +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=false +svg/scale=1.0 diff --git a/2d/skeleton/level/tileset/tileset.tres b/2d/skeleton/level/tileset/tileset.tres new file mode 100644 index 00000000..3a8c7e89 --- /dev/null +++ b/2d/skeleton/level/tileset/tileset.tres @@ -0,0 +1,335 @@ +[gd_resource type="TileSet" load_steps=14 format=2] + +[ext_resource path="res://level/tileset/tiles_demo.png" type="Texture" id=1] + +[sub_resource type="ConvexPolygonShape2D" id=1] +points = PoolVector2Array( 0, 6, 32, 6, 32, 32, 0, 32 ) + +[sub_resource type="ConvexPolygonShape2D" id=2] +points = PoolVector2Array( 0, 6, 28, 6, 28, 32, 0, 32 ) + +[sub_resource type="ConvexPolygonShape2D" id=3] +points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 ) + +[sub_resource type="ConvexPolygonShape2D" id=4] +points = PoolVector2Array( 0, 6, 32, 6, 32, 32, 0, 32 ) + +[sub_resource type="ConvexPolygonShape2D" id=5] +points = PoolVector2Array( 32, 38, 32, 64, 0, 64, 0, 6 ) + +[sub_resource type="ConvexPolygonShape2D" id=6] +points = PoolVector2Array( 0, 0, 28, 0, 28, 32, 0, 32 ) + +[sub_resource type="ConvexPolygonShape2D" id=7] +points = PoolVector2Array( 28, 6, 32, 6, 32, 32, 0, 32, 0, 0, 28, 0 ) + +[sub_resource type="ConvexPolygonShape2D" id=8] +points = PoolVector2Array( 0, 6, 32, 6, 32, 32, 0, 32 ) + +[sub_resource type="ConvexPolygonShape2D" id=9] +points = PoolVector2Array( 0, 6, 28, 6, 28, 32, 0, 32 ) + +[sub_resource type="ConvexPolygonShape2D" id=10] +points = PoolVector2Array( 0, 0, 32, 0, 32, 32, 0, 32 ) + +[sub_resource type="ConvexPolygonShape2D" id=11] +points = PoolVector2Array( 0, 0, 32, 0, 32, 24, 0, 24 ) + +[sub_resource type="ConvexPolygonShape2D" id=12] +points = PoolVector2Array( 0, 0, 28, 0, 28, 24, 0, 24 ) + +[resource] +0/name = "ground" +0/texture = ExtResource( 1 ) +0/tex_offset = Vector2( 0, 0 ) +0/modulate = Color( 1, 1, 1, 1 ) +0/region = Rect2( 0, 0, 32, 32 ) +0/tile_mode = 0 +0/occluder_offset = Vector2( 0, 0 ) +0/navigation_offset = Vector2( 0, 0 ) +0/shape_offset = Vector2( 0, 0 ) +0/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +0/shape = SubResource( 1 ) +0/shape_one_way = false +0/shape_one_way_margin = 1.0 +0/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 1 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +0/z_index = 0 +1/name = "ground_end" +1/texture = ExtResource( 1 ) +1/tex_offset = Vector2( 0, 0 ) +1/modulate = Color( 1, 1, 1, 1 ) +1/region = Rect2( 32, 0, 32, 32 ) +1/tile_mode = 0 +1/occluder_offset = Vector2( 0, 0 ) +1/navigation_offset = Vector2( 0, 0 ) +1/shape_offset = Vector2( 0, 0 ) +1/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +1/shape = SubResource( 2 ) +1/shape_one_way = false +1/shape_one_way_margin = 1.0 +1/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 2 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +1/z_index = 0 +2/name = "slope" +2/texture = ExtResource( 1 ) +2/tex_offset = Vector2( 0, 0 ) +2/modulate = Color( 1, 1, 1, 1 ) +2/region = Rect2( 64, 64, 32, 64 ) +2/tile_mode = 0 +2/occluder_offset = Vector2( 0, 0 ) +2/navigation_offset = Vector2( 0, 0 ) +2/shape_offset = Vector2( 0, 0 ) +2/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +2/shape = SubResource( 5 ) +2/shape_one_way = false +2/shape_one_way_margin = 1.0 +2/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 5 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +2/z_index = 0 +3/name = "wall" +3/texture = ExtResource( 1 ) +3/tex_offset = Vector2( 0, 0 ) +3/modulate = Color( 1, 1, 1, 1 ) +3/region = Rect2( 32, 32, 32, 32 ) +3/tile_mode = 0 +3/occluder_offset = Vector2( 0, 0 ) +3/navigation_offset = Vector2( 0, 0 ) +3/shape_offset = Vector2( 0, 0 ) +3/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +3/shape = SubResource( 6 ) +3/shape_one_way = false +3/shape_one_way_margin = 1.0 +3/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 6 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +3/z_index = 0 +4/name = "slope_top" +4/texture = ExtResource( 1 ) +4/tex_offset = Vector2( 0, 0 ) +4/modulate = Color( 1, 1, 1, 1 ) +4/region = Rect2( 32, 64, 32, 32 ) +4/tile_mode = 0 +4/occluder_offset = Vector2( 0, 0 ) +4/navigation_offset = Vector2( 0, 0 ) +4/shape_offset = Vector2( 0, 0 ) +4/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +4/shape = SubResource( 7 ) +4/shape_one_way = false +4/shape_one_way_margin = 1.0 +4/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 7 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +4/z_index = 0 +5/name = "one_way" +5/texture = ExtResource( 1 ) +5/tex_offset = Vector2( 0, 0 ) +5/modulate = Color( 1, 1, 1, 1 ) +5/region = Rect2( 64, 0, 32, 32 ) +5/tile_mode = 0 +5/occluder_offset = Vector2( 0, 0 ) +5/navigation_offset = Vector2( 0, 0 ) +5/shape_offset = Vector2( 0, 0 ) +5/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +5/shape = SubResource( 8 ) +5/shape_one_way = true +5/shape_one_way_margin = 1.0 +5/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": true, +"one_way_margin": 1.0, +"shape": SubResource( 8 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +5/z_index = 0 +6/name = "one_way_end" +6/texture = ExtResource( 1 ) +6/tex_offset = Vector2( 0, 0 ) +6/modulate = Color( 1, 1, 1, 1 ) +6/region = Rect2( 96, 0, 32, 32 ) +6/tile_mode = 0 +6/occluder_offset = Vector2( 0, 0 ) +6/navigation_offset = Vector2( 0, 0 ) +6/shape_offset = Vector2( 0, 0 ) +6/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +6/shape = SubResource( 9 ) +6/shape_one_way = true +6/shape_one_way_margin = 1.0 +6/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": true, +"one_way_margin": 1.0, +"shape": SubResource( 9 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +6/z_index = 0 +7/name = "rock" +7/texture = ExtResource( 1 ) +7/tex_offset = Vector2( 0, 0 ) +7/modulate = Color( 1, 1, 1, 1 ) +7/region = Rect2( 0, 32, 32, 32 ) +7/tile_mode = 0 +7/occluder_offset = Vector2( 0, 0 ) +7/navigation_offset = Vector2( 0, 0 ) +7/shape_offset = Vector2( 0, 0 ) +7/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +7/shape = SubResource( 10 ) +7/shape_one_way = false +7/shape_one_way_margin = 1.0 +7/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 10 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +7/z_index = 0 +8/name = "bottom" +8/texture = ExtResource( 1 ) +8/tex_offset = Vector2( 0, 0 ) +8/modulate = Color( 1, 1, 1, 1 ) +8/region = Rect2( 192, 32, 32, 32 ) +8/tile_mode = 0 +8/occluder_offset = Vector2( 0, 0 ) +8/navigation_offset = Vector2( 0, 0 ) +8/shape_offset = Vector2( 0, 0 ) +8/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +8/shape = SubResource( 11 ) +8/shape_one_way = false +8/shape_one_way_margin = 1.0 +8/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 11 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +8/z_index = 0 +9/name = "bottom_end" +9/texture = ExtResource( 1 ) +9/tex_offset = Vector2( 0, 0 ) +9/modulate = Color( 1, 1, 1, 1 ) +9/region = Rect2( 224, 32, 32, 32 ) +9/tile_mode = 0 +9/occluder_offset = Vector2( 0, 0 ) +9/navigation_offset = Vector2( 0, 0 ) +9/shape_offset = Vector2( 0, 0 ) +9/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +9/shape = SubResource( 12 ) +9/shape_one_way = false +9/shape_one_way_margin = 1.0 +9/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 12 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +9/z_index = 0 +10/name = "bottom_corner" +10/texture = ExtResource( 1 ) +10/tex_offset = Vector2( 0, 0 ) +10/modulate = Color( 1, 1, 1, 1 ) +10/region = Rect2( 160, 32, 32, 32 ) +10/tile_mode = 0 +10/occluder_offset = Vector2( 0, 0 ) +10/navigation_offset = Vector2( 0, 0 ) +10/shape_offset = Vector2( 0, 0 ) +10/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +10/shape = SubResource( 3 ) +10/shape_one_way = false +10/shape_one_way_margin = 1.0 +10/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 3 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +10/z_index = 0 +11/name = "tree_trunk_0" +11/texture = ExtResource( 1 ) +11/tex_offset = Vector2( 0, 0 ) +11/modulate = Color( 1, 1, 1, 1 ) +11/region = Rect2( 128, 64, 32, 32 ) +11/tile_mode = 0 +11/occluder_offset = Vector2( 0, 0 ) +11/navigation_offset = Vector2( 0, 0 ) +11/shape_offset = Vector2( 0, 0 ) +11/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +11/shape_one_way = false +11/shape_one_way_margin = 0.0 +11/shapes = [ ] +11/z_index = 0 +12/name = "tree_trunk_1" +12/texture = ExtResource( 1 ) +12/tex_offset = Vector2( 0, 0 ) +12/modulate = Color( 1, 1, 1, 1 ) +12/region = Rect2( 128, 32, 32, 32 ) +12/tile_mode = 0 +12/occluder_offset = Vector2( 0, 0 ) +12/navigation_offset = Vector2( 0, 0 ) +12/shape_offset = Vector2( 0, 0 ) +12/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +12/shape_one_way = false +12/shape_one_way_margin = 0.0 +12/shapes = [ ] +12/z_index = 0 +13/name = "tree_base" +13/texture = ExtResource( 1 ) +13/tex_offset = Vector2( 0, 0 ) +13/modulate = Color( 1, 1, 1, 1 ) +13/region = Rect2( 128, 96, 32, 32 ) +13/tile_mode = 0 +13/occluder_offset = Vector2( 0, 0 ) +13/navigation_offset = Vector2( 0, 0 ) +13/shape_offset = Vector2( 0, 0 ) +13/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +13/shape = SubResource( 4 ) +13/shape_one_way = false +13/shape_one_way_margin = 1.0 +13/shapes = [ { +"autotile_coord": Vector2( 0, 0 ), +"one_way": false, +"one_way_margin": 1.0, +"shape": SubResource( 4 ), +"shape_transform": Transform2D( 1, 0, 0, 1, 0, 0 ) +} ] +13/z_index = 0 +14/name = "tree_top" +14/texture = ExtResource( 1 ) +14/tex_offset = Vector2( 0, 0 ) +14/modulate = Color( 1, 1, 1, 1 ) +14/region = Rect2( 128, 0, 32, 32 ) +14/tile_mode = 0 +14/occluder_offset = Vector2( 0, 0 ) +14/navigation_offset = Vector2( 0, 0 ) +14/shape_offset = Vector2( 0, 0 ) +14/shape_transform = Transform2D( 1, 0, 0, 1, 0, 0 ) +14/shape_one_way = false +14/shape_one_way_margin = 0.0 +14/shapes = [ ] +14/z_index = 0 diff --git a/2d/skeleton/player/gBot.png b/2d/skeleton/player/gBot.png new file mode 100644 index 00000000..183c8985 Binary files /dev/null and b/2d/skeleton/player/gBot.png differ diff --git a/2d/skeleton/player/gBot.png.import b/2d/skeleton/player/gBot.png.import new file mode 100644 index 00000000..265b0c5a --- /dev/null +++ b/2d/skeleton/player/gBot.png.import @@ -0,0 +1,34 @@ +[remap] + +importer="texture" +type="StreamTexture" +path="res://.import/gBot.png-b94e4323e02d18e8c6fabf612fa396da.stex" +metadata={ +"vram_texture": false +} + +[deps] + +source_file="res://player/gBot.png" +dest_files=[ "res://.import/gBot.png-b94e4323e02d18e8c6fabf612fa396da.stex" ] + +[params] + +compress/mode=0 +compress/lossy_quality=0.7 +compress/hdr_mode=0 +compress/bptc_ldr=0 +compress/normal_map=0 +flags/repeat=0 +flags/filter=true +flags/mipmaps=false +flags/anisotropic=false +flags/srgb=2 +process/fix_alpha_border=true +process/premult_alpha=false +process/HDR_as_SRGB=false +process/invert_color=false +stream=false +size_limit=0 +detect_3d=true +svg/scale=1.0 diff --git a/2d/skeleton/player/player.gd b/2d/skeleton/player/player.gd new file mode 100644 index 00000000..744a81c1 --- /dev/null +++ b/2d/skeleton/player/player.gd @@ -0,0 +1,74 @@ +class_name Player +extends KinematicBody2D + +# Keep this in sync with the AnimationTree's state names and numbers. +enum States { + IDLE = 0, + WALK = 1, + RUN = 2, + FLY = 3, + FALL = 4, +} + +var speed = Vector2(120.0, 360.0) +var velocity = Vector2.ZERO +var falling_slow = false +var falling_fast = false +var no_move_horizontal_time = 0.0 + +onready var gravity = ProjectSettings.get_setting("physics/2d/default_gravity") +onready var sprite = $Sprite +onready var sprite_scale = sprite.scale.x + + +func _ready(): + $AnimationTree.active = true + + +func _physics_process(delta): + velocity.y += gravity * delta + if no_move_horizontal_time > 0.0: + # After doing a hard fall, don't move for a short time. + velocity.x = 0.0 + no_move_horizontal_time -= delta + else: + velocity.x = (Input.get_action_strength("move_right") - Input.get_action_strength("move_left")) * speed.x + if Input.is_action_pressed("walk"): + velocity.x *= 0.2 + #warning-ignore:return_value_discarded + velocity = move_and_slide(velocity, Vector2.UP) + # Calculate flipping and falling speed for animation purposes. + if velocity.x > 0: + sprite.transform.x = Vector2(sprite_scale, 0) + elif velocity.x < 0: + sprite.transform.x = Vector2(-sprite_scale, 0) + if velocity.y > 500: + falling_fast = true + falling_slow = false + elif velocity.y > 300: + falling_slow = true + # Check if on floor and do mostly animation stuff based on it. + if is_on_floor(): + if falling_fast: + $AnimationTree["parameters/land_hard/active"] = true + no_move_horizontal_time = 0.4 + falling_fast = false + elif falling_slow: + $AnimationTree["parameters/land/active"] = true + falling_slow = false + if Input.is_action_just_pressed("jump"): + $AnimationTree["parameters/jump/active"] = true + velocity.y = -speed.y + if abs(velocity.x) > 50: + $AnimationTree["parameters/state/current"] = States.RUN + $AnimationTree["parameters/run_timescale/scale"] = abs(velocity.x) / 60 + elif velocity.x: + $AnimationTree["parameters/state/current"] = States.WALK + $AnimationTree["parameters/walk_timescale/scale"] = abs(velocity.x) / 12 + else: + $AnimationTree["parameters/state/current"] = States.IDLE + else: + if velocity.y > 0: + $AnimationTree["parameters/state/current"] = States.FALL + else: + $AnimationTree["parameters/state/current"] = States.FLY diff --git a/2d/skeleton/player/player.tscn b/2d/skeleton/player/player.tscn new file mode 100644 index 00000000..2e12791a --- /dev/null +++ b/2d/skeleton/player/player.tscn @@ -0,0 +1,1952 @@ +[gd_scene load_steps=27 format=2] + +[ext_resource path="res://player/player.gd" type="Script" id=1] +[ext_resource path="res://player/gBot.png" type="Texture" id=2] + +[sub_resource type="Animation" id=1] +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite/Skeleton2D/Hip/Chest/LeftArm/LeftForearm/LeftHand:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0.5, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 70.4643, 70.4643 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Sprite/Skeleton2D/Hip/Chest/RightArm:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0.5, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -37.4387, -30.0798 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Sprite/Skeleton2D/Hip/Chest/LeftArm/LeftForearm:rotation_degrees") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0.5, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -25.4772, -47.0619 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Sprite/Skeleton2D/Hip/Chest/Head/Chin:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0.5, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 3.02107, -2.49648 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Sprite/Skeleton2D/Hip/Chest/Head:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0.5, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 12.6368, 16.4997 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Sprite/Skeleton2D/Hip/Chest/LeftArm:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0.5, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 29.1185, 42.6324 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Sprite/Skeleton2D/Hip/Chest:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0.5, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 2.08718, -4.90066 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Sprite/Skeleton2D/Hip:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0.5, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Sprite/Skeleton2D/Hip/Chest/RightArm/RightForearm:rotation_degrees") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0.5, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 18.2027, -3.07291 ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Sprite/Skeleton2D/Hip/Chest/RightArm/RightForearm/RightHand:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0.5, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 70.3278, 70.3278 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Sprite/Skeleton2D/Hip/LeftLeg/LeftLowerLeg:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0.5, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 24.2348, 35.1483 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Sprite/Skeleton2D/Hip/LeftLeg:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0.5, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -14.3397, 5.91387 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Sprite/Skeleton2D/Hip/RightLeg:rotation_degrees") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0.5, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -34.5752, -43.2786 ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Sprite/Skeleton2D/Hip/LeftLeg/LeftLowerLeg/LeftFoot:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0.5, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Sprite/Skeleton2D/Hip:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( ), +"transitions": PoolRealArray( ), +"update": 0, +"values": [ ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Sprite/Skeleton2D/Hip/RightLeg/RightLowerLeg/RightFoot:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0.5, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Sprite/Skeleton2D/Hip/RightLeg/RightLowerLeg:rotation_degrees") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0.5, 1 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 21.1503, 35.6408 ] +} + +[sub_resource type="Animation" id=2] +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite/Skeleton2D/Hip:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( -3, -11 ), Vector2( -3, -11 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Sprite/Skeleton2D/Hip:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 11.6703, 11.6703 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Sprite/Skeleton2D/Hip/LeftLeg/LeftLowerLeg/LeftFoot:rotation_degrees") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 38.6239, 38.6239 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Sprite/Skeleton2D/Hip/Chest:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -11.5462, -8.494 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Sprite/Skeleton2D/Hip/Chest/Head:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -11.0514, -25.0228 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Sprite/Skeleton2D/Hip/Chest/LeftArm:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 21.6381, 13.6475 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Sprite/Skeleton2D/Hip/Chest/Head/Chin:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 3.43037, -3.49671 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Sprite/Skeleton2D/Hip/Chest/RightArm:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 16.6504, 7.36116 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Sprite/Skeleton2D/Hip/Chest/RightArm/RightForearm:rotation_degrees") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 3.76293, 3.76293 ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Sprite/Skeleton2D/Hip/Chest/RightArm/RightForearm/RightHand:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 70.3278, 70.3278 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Sprite/Skeleton2D/Hip/LeftLeg:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 10.1037, 15.2186 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Sprite/Skeleton2D/Hip/LeftLeg/LeftLowerLeg:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 4.93806 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Sprite/Skeleton2D/Hip/RightLeg/RightLowerLeg:rotation_degrees") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 42.7374, 32.673 ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Sprite/Skeleton2D/Hip/Chest/LeftArm/LeftForearm/LeftHand:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 70.4643, 70.4643 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Sprite/Skeleton2D/Hip/RightLeg/RightLowerLeg/RightFoot:rotation_degrees") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 29.6667, 29.6667 ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Sprite/Skeleton2D/Hip/RightLeg:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -24.0246, -12.7213 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Sprite/Skeleton2D/Hip/Chest/LeftArm/LeftForearm:rotation_degrees") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 6.71521, 6.71521 ] +} + +[sub_resource type="Animation" id=3] +length = 2.0 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite/Skeleton2D/Hip/Chest/LeftArm/LeftForearm/LeftHand:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0.5, 1.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 70.4643, 70.4643 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Sprite/Skeleton2D/Hip/Chest/RightArm:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0.5, 1.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Sprite/Skeleton2D/Hip/Chest/LeftArm/LeftForearm:rotation_degrees") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0.5, 1.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Sprite/Skeleton2D/Hip/Chest/Head/Chin:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0.5, 1.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0971458, 0.0971458 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Sprite/Skeleton2D/Hip/Chest/Head:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0.5, 1.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -1.00903, 4.92988 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Sprite/Skeleton2D/Hip/Chest/LeftArm:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0.5, 1.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Sprite/Skeleton2D/Hip/Chest:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0.5, 1.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -0.342875, -0.433443 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Sprite/Skeleton2D/Hip:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0.5, 1.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Sprite/Skeleton2D/Hip/Chest/RightArm/RightForearm:rotation_degrees") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0.5, 1.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0 ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Sprite/Skeleton2D/Hip/Chest/RightArm/RightForearm/RightHand:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0.5, 1.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 70.3278, 70.3278 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Sprite/Skeleton2D/Hip/LeftLeg/LeftLowerLeg:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0.5, 1.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Sprite/Skeleton2D/Hip/LeftLeg:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0.5, 1.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Sprite/Skeleton2D/Hip/RightLeg:rotation_degrees") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0.5, 1.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0 ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Sprite/Skeleton2D/Hip/LeftLeg/LeftLowerLeg/LeftFoot:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0.5, 1.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Sprite/Skeleton2D/Hip:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0.5 ), +"transitions": PoolRealArray( 1 ), +"update": 0, +"values": [ Vector2( -3, -11 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Sprite/Skeleton2D/Hip/RightLeg/RightLowerLeg/RightFoot:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0.5, 1.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Sprite/Skeleton2D/Hip/RightLeg/RightLowerLeg:rotation_degrees") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0.5, 1.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0 ] +} + +[sub_resource type="Animation" id=4] +length = 0.5 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite/Skeleton2D/Hip/Chest/LeftArm/LeftForearm/LeftHand:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 70.4643, 70.4643 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Sprite/Skeleton2D/Hip/Chest/RightArm:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, -29.4707 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Sprite/Skeleton2D/Hip/Chest/LeftArm/LeftForearm:rotation_degrees") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, -74.1478 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Sprite/Skeleton2D/Hip/Chest/Head/Chin:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0971458, 5.9923 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Sprite/Skeleton2D/Hip/Chest/Head:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 1.96043, -28.2334 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Sprite/Skeleton2D/Hip/Chest/LeftArm:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 19.9986 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Sprite/Skeleton2D/Hip/Chest:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ -0.388159, -0.342875 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Sprite/Skeleton2D/Hip:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 5.03596 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Sprite/Skeleton2D/Hip/Chest/RightArm/RightForearm:rotation_degrees") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, -54.8646 ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Sprite/Skeleton2D/Hip/Chest/RightArm/RightForearm/RightHand:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 70.3278, 70.3278 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Sprite/Skeleton2D/Hip/LeftLeg/LeftLowerLeg:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Sprite/Skeleton2D/Hip/LeftLeg:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 28.9085 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Sprite/Skeleton2D/Hip/RightLeg:rotation_degrees") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, -91.5006 ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Sprite/Skeleton2D/Hip/LeftLeg/LeftLowerLeg/LeftFoot:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 34.3885 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Sprite/Skeleton2D/Hip:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ Vector2( -3, -11 ), Vector2( -3, -11 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Sprite/Skeleton2D/Hip/RightLeg/RightLowerLeg/RightFoot:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 22.3661 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Sprite/Skeleton2D/Hip/RightLeg/RightLowerLeg:rotation_degrees") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0, 0.5 ), +"transitions": PoolRealArray( 1, 1 ), +"update": 0, +"values": [ 0.0, 135.318 ] +} + +[sub_resource type="Animation" id=5] +length = 0.2 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite/Skeleton2D/Hip/Chest/RightArm:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -37.4387, -54.52, 0.0 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Sprite/Skeleton2D/Hip/Chest/LeftArm:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.1, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 29.1185, 53.6614, 0.0 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Sprite/Skeleton2D/Hip/Chest/RightArm/RightForearm/RightHand:rotation_degrees") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.1, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 70.3278, 70.3278, 70.3278 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Sprite/Skeleton2D/Hip/Chest/LeftArm/LeftForearm:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.1, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -25.4772, -25.4772, 0.0 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Sprite/Skeleton2D/Hip/Chest/LeftArm/LeftForearm/LeftHand:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.1, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 70.4643, 70.4643, 70.4643 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Sprite/Skeleton2D/Hip/LeftLeg:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 0.1, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -43.9948, -48.5965, 0.0 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Sprite/Skeleton2D/Hip/LeftLeg/LeftLowerLeg:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 0.1, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 66.2951, 73.0908, 0.0 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Sprite/Skeleton2D/Hip/Chest/Head/Chin:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0, 0.1, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 3.02107, 3.02107, 0.0971456 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Sprite/Skeleton2D/Hip/Chest:rotation_degrees") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 0.1, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 2.08718, 10.2298, 0.0 ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Sprite/Skeleton2D/Hip:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 0.1, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Sprite/Skeleton2D/Hip/Chest/Head:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 0.1, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 12.6368, 26.4252, 0.0 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Sprite/Skeleton2D/Hip/Chest/RightArm/RightForearm:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 0.1, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 18.2027, 18.2027, 0.0 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Sprite/Skeleton2D/Hip/LeftLeg/LeftLowerLeg/LeftFoot:rotation_degrees") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 0.1, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -23.9072, -25.6845, 0.0 ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Sprite/Skeleton2D/Hip/RightLeg:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 0.1, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -58.5844, -62.8435, 0.0 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Sprite/Skeleton2D/Hip/RightLeg/RightLowerLeg:rotation_degrees") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 0.1, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 65.1351, 71.2243, 0.0 ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Sprite/Skeleton2D/Hip/RightLeg/RightLowerLeg/RightFoot:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 0.1, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ -7.80448, -9.33398, 0.0 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Sprite/Skeleton2D/Hip:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0, 0.1, 0.2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -3, 5 ), Vector2( -3, 10 ), Vector2( -3, -11 ) ] +} + +[sub_resource type="Animation" id=6] +length = 0.5 +step = 0.05 +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite/Skeleton2D/Hip/Chest/RightArm:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -37.4387, -42.625, -47.8112, 0.0 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Sprite/Skeleton2D/Hip/Chest/LeftArm:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 29.1185, 11.1272, -6.86405, 0.0 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Sprite/Skeleton2D/Hip/Chest/RightArm/RightForearm/RightHand:rotation_degrees") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 70.3278, 70.3278, 70.3278, 70.3278 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Sprite/Skeleton2D/Hip/Chest/LeftArm/LeftForearm:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ -25.4772, -26.7555, -28.0338, 0.0 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Sprite/Skeleton2D/Hip/Chest/LeftArm/LeftForearm/LeftHand:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 70.4643, 70.4643, 70.4643, 70.4643 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Sprite/Skeleton2D/Hip/LeftLeg:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -14.3397, -73.2607, -101.672, -96.0437, -87.0644, -81.4364, -75.5482, -68.1294, -59.4516, -50.1338, 0.0 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Sprite/Skeleton2D/Hip/LeftLeg/LeftLowerLeg:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 24.2348, 81.9933, 115.218, 109.655, 100.857, 93.9295, 86.7621, 74.4117, 61.857, 48.4646, 0.0 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Sprite/Skeleton2D/Hip/Chest/Head/Chin:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 3.02107, 3.71772, 4.41437, 0.0971456 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Sprite/Skeleton2D/Hip/Chest:rotation_degrees") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 2.08718, 28.9276, 55.7679, 0.0 ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Sprite/Skeleton2D/Hip:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0, 0.0 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Sprite/Skeleton2D/Hip/Chest/Head:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 12.6368, -16.0313, -44.6993, 0.0 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Sprite/Skeleton2D/Hip/Chest/RightArm/RightForearm:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ 18.2027, -3.87389, -25.9505, 0.0 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Sprite/Skeleton2D/Hip/LeftLeg/LeftLowerLeg/LeftFoot:rotation_degrees") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 0.0, -10.1754, -13.1646, -13.0273, -14.769, -12.3075, -9.846, -7.3845, -4.923, 0.529002, 0.0 ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Sprite/Skeleton2D/Hip/RightLeg:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -34.5752, 2.11899, 3.93722, 6.87805, 10.7401, 13.8492, 20.5412, 23.1791, 22.8794, 25.5064, 0.0 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Sprite/Skeleton2D/Hip/RightLeg/RightLowerLeg:rotation_degrees") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 21.1503, 76.1453, 94.2895, 86.0563, 78.3633, 70.5102, 56.7355, 48.8479, 42.6883, 31.5334, 0.0 ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Sprite/Skeleton2D/Hip/RightLeg/RightLowerLeg/RightFoot:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.15, 0.2, 0.25, 0.3, 0.35, 0.4, 0.45, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 21.3576, 0.0, 2.33302, 1.93295, 1.61079, 1.28863, 6.65732, 19.5055, 26.646, 0.0 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Sprite/Skeleton2D/Hip:position") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0, 0.05, 0.1, 0.5 ), +"transitions": PoolRealArray( 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -3, -11 ), Vector2( -3, 34.5 ), Vector2( -3, 80 ), Vector2( -3, -11 ) ] +} + +[sub_resource type="Animation" id=7] +resource_name = "run" +length = 1.2 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite/Skeleton2D/Hip:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.1, 0.3, 0.4, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( 0, 0 ), Vector2( 0, 20 ), Vector2( 0, 0 ), Vector2( 0, -20 ), Vector2( 0, 0 ), Vector2( 0, 20 ), Vector2( 0, 10 ), Vector2( 0, 0 ), Vector2( 0, -20 ), Vector2( 0, -10 ), Vector2( 0, 0 ) ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Sprite/Skeleton2D/Hip:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 6.28233, 4.18822, 2.09411, 0.0, 0.0, 0.0, 0.0, 1.04705, 2.09411, 3.14116, 4.18822, 5.23527, 6.28233 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Sprite/Skeleton2D/Hip/LeftLeg/LeftLowerLeg/LeftFoot:rotation_degrees") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 0.0624552, 33.5158, 39.6506, 9.94342, -5.42779, 3.83004, 18.268, -33.7764, -41.6349, -20.918, 46.3613, 23.2119, 0.0624552 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Sprite/Skeleton2D/Hip/Chest:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.6, 1.2 ), +"transitions": PoolRealArray( 1, 1, 1 ), +"update": 0, +"values": [ 17.0, 18.0496, 17.0 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Sprite/Skeleton2D/Hip/Chest/Head:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -22.2496, -20.4251, -18.6005, -16.776, -16.776, -16.776, -16.776, -17.6883, -18.6005, -19.5128, -20.4251, -21.3373, -22.2496 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Sprite/Skeleton2D/Hip/Chest/LeftArm:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 0.1, 0.3, 0.4, 0.7, 0.8, 0.9, 1, 1.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -40.1318, -34.1689, 4.46022, 19.5206, 35.3344, 18.5494, -16.0323, -26.4507, -40.1318 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Sprite/Skeleton2D/Hip/Chest/Head/Chin:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 0.0971456, 0.0971456, 0.0971456, 0.0971456, 0.0971456, 0.0971456, 0.0971456, 0.0971456, 0.0971456, 0.0971456, 0.0971456, 0.0971456, 0.0971456 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Sprite/Skeleton2D/Hip/Chest/RightArm:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0, 0.1, 0.3, 0.4, 0.7, 0.8, 0.9, 1, 1.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 49.6868, 39.5608, 0.72485, -4.42639, -55.2494, -33.4131, 20.974, 27.9563, 49.6868 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Sprite/Skeleton2D/Hip/Chest/RightArm/RightForearm:rotation_degrees") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 0.1, 0.3, 0.4, 0.7, 0.8, 0.9, 1, 1.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -86.5264, -52.0043, -50.7752, -75.909, -65.4772, -57.7609, -65.3075, -63.6975, -86.5264 ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Sprite/Skeleton2D/Hip/Chest/RightArm/RightForearm/RightHand:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 0.1, 0.3, 0.4, 0.7, 0.8, 0.9, 1, 1.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 70.3278, 70.3278, 70.3278, 70.3278, 70.3278, 70.3278, 70.3278, 70.3278, 70.3278 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Sprite/Skeleton2D/Hip/LeftLeg:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 19.4265, -18.9075, -49.2737, -97.3648, -66.2172, -67.8162, -29.2417, -47.1932, 0.705066, 10.0524, 23.4968, 21.4617, 19.4265 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Sprite/Skeleton2D/Hip/LeftLeg/LeftLowerLeg:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 95.6353, 110.788, 117.695, 106.106, 43.7348, 37.4385, 9.07671, 78.9234, 39.2062, 48.7418, 17.1601, 56.3977, 95.6353 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Sprite/Skeleton2D/Hip/RightLeg/RightLowerLeg:rotation_degrees") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 55.6942, 91.4726, 39.859, 30.6418, 26.0914, 57.3896, 95.5336, 65.7712, 84.8885, 105.98, 102.003, 41.5752, 55.6942 ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Sprite/Skeleton2D/Hip/Chest/LeftArm/LeftForearm/LeftHand:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 0.1, 0.3, 0.4, 0.7, 0.8, 0.9, 1, 1.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 70.4643, 70.4643, 70.4643, 70.4643, 70.4643, 70.4643, 70.4643, 70.4643, 70.4643 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Sprite/Skeleton2D/Hip/RightLeg/RightLowerLeg/RightFoot:rotation_degrees") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 6.20701, -36.6959, -36.1181, -15.9378, 40.2239, 36.8756, 14.7112, 13.2938, 11.8765, 10.4591, -0.393764, -3.89666, 6.20701 ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Sprite/Skeleton2D/Hip/RightLeg:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1, 1.1, 1.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -65.6781, -57.6967, -2.98436, 19.7068, 20.6046, 22.5818, 15.487, 26.3705, 2.87948, -41.8002, -72.8228, -80.0806, -65.6781 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Sprite/Skeleton2D/Hip/Chest/LeftArm/LeftForearm:rotation_degrees") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0, 0.1, 0.3, 0.4, 0.7, 0.8, 0.9, 1, 1.2 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -69.0495, -61.2157, -59.8623, -53.6418, -34.8144, -56.766, -46.3663, -57.7804, -69.0495 ] +} + +[sub_resource type="Animation" id=8] +length = 2.4 +loop = true +tracks/0/type = "value" +tracks/0/path = NodePath("Sprite/Skeleton2D/Hip/Chest/LeftArm/LeftForearm/LeftHand:rotation_degrees") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/keys = { +"times": PoolRealArray( 0, 0.3, 0.6, 0.9, 1.2, 1.5, 1.8, 2.1, 2.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 70.4643, 70.4643, 70.4643, 70.4643, 70.4643, 70.4643, 70.4643, 70.4643, 70.4643 ] +} +tracks/1/type = "value" +tracks/1/path = NodePath("Sprite/Skeleton2D/Hip/Chest/RightArm:rotation_degrees") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/keys = { +"times": PoolRealArray( 0, 0.3, 0.6, 0.9, 1.2, 1.8, 2.1, 2.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 22.9554, 14.364, 4.85809, -17.8627, -33.209, 16.3409, 34.6629, 22.9554 ] +} +tracks/2/type = "value" +tracks/2/path = NodePath("Sprite/Skeleton2D/Hip/Chest/LeftArm/LeftForearm:rotation_degrees") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/keys = { +"times": PoolRealArray( 0, 0.3, 0.6, 0.9, 1.2, 1.5, 1.8, 2.1, 2.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -27.7881, -37.5891, -12.3507, -24.3746, -36.6077, -36.6077, -23.3157, -37.0737, -27.7881 ] +} +tracks/3/type = "value" +tracks/3/path = NodePath("Sprite/Skeleton2D/Hip/Chest/Head/Chin:rotation_degrees") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/keys = { +"times": PoolRealArray( 0, 0.3, 0.6, 0.9, 1.2, 1.5, 1.8, 2.1, 2.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 0.0971456, 0.0971456, 0.0971456, 0.0971456, 0.0971456, 0.0971456, 0.0971456, 0.0971456, 0.0971456 ] +} +tracks/4/type = "value" +tracks/4/path = NodePath("Sprite/Skeleton2D/Hip/Chest/Head:rotation_degrees") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/keys = { +"times": PoolRealArray( 0, 0.3, 0.6, 0.9, 1.2, 1.5, 1.8, 2.1, 2.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] +} +tracks/5/type = "value" +tracks/5/path = NodePath("Sprite/Skeleton2D/Hip/Chest/LeftArm:rotation_degrees") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/keys = { +"times": PoolRealArray( 0, 0.3, 0.6, 0.9, 1.2, 1.8, 2.1, 2.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -38.8261, -17.6849, -2.00788, 23.4365, 48.0693, 4.34599, -14.5235, -38.8261 ] +} +tracks/6/type = "value" +tracks/6/path = NodePath("Sprite/Skeleton2D/Hip/Chest:rotation_degrees") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/keys = { +"times": PoolRealArray( 0, 0.3, 0.6, 0.9, 1.2, 1.5, 1.8, 2.1, 2.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] +} +tracks/7/type = "value" +tracks/7/path = NodePath("Sprite/Skeleton2D/Hip:rotation_degrees") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/keys = { +"times": PoolRealArray( 0, 0.3, 0.6, 0.9, 1.2, 1.5, 1.8, 2.1, 2.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 ] +} +tracks/8/type = "value" +tracks/8/path = NodePath("Sprite/Skeleton2D/Hip/Chest/RightArm/RightForearm:rotation_degrees") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/keys = { +"times": PoolRealArray( 0, 0.3, 0.6, 0.9, 1.2, 1.5, 1.8, 2.1, 2.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -35.0791, -35.5942, -13.9125, -29.3814, -38.5556, -38.5556, -15.7102, -29.9646, -35.0791 ] +} +tracks/9/type = "value" +tracks/9/path = NodePath("Sprite/Skeleton2D/Hip/Chest/RightArm/RightForearm/RightHand:rotation_degrees") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/keys = { +"times": PoolRealArray( 0, 0.3, 0.6, 0.9, 1.2, 1.5, 1.8, 2.1, 2.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 70.3278, 70.3278, 70.3278, 70.3278, 70.3278, 70.3278, 70.3278, 70.3278, 70.3278 ] +} +tracks/10/type = "value" +tracks/10/path = NodePath("Sprite/Skeleton2D/Hip/LeftLeg/LeftLowerLeg:rotation_degrees") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/keys = { +"times": PoolRealArray( 0, 0.3, 0.6, 0.9, 1.2, 1.5, 1.8, 2.1, 2.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 24.0853, 33.5536, 125.838, 70.4823, 4.17665, 48.5185, 7.37566, 21.7199, 24.0853 ] +} +tracks/11/type = "value" +tracks/11/path = NodePath("Sprite/Skeleton2D/Hip/LeftLeg:rotation_degrees") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/keys = { +"times": PoolRealArray( 0, 0.3, 0.6, 0.9, 1.2, 1.5, 1.8, 2.1, 2.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 19.926, 18.6897, -47.2542, -60.9198, -22.225, -39.5632, 23.8388, 25.4551, 19.926 ] +} +tracks/12/type = "value" +tracks/12/path = NodePath("Sprite/Skeleton2D/Hip/RightLeg:rotation_degrees") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/keys = { +"times": PoolRealArray( 0, 0.3, 0.6, 0.9, 1.2, 1.5, 1.8, 2.1, 2.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -26.9247, -50.2536, -17.8582, 9.5402, 27.8206, 31.8761, -15.9817, -38.2518, -26.9247 ] +} +tracks/13/type = "value" +tracks/13/path = NodePath("Sprite/Skeleton2D/Hip/LeftLeg/LeftLowerLeg/LeftFoot:rotation_degrees") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/keys = { +"times": PoolRealArray( 0, 0.3, 0.6, 0.9, 1.2, 1.5, 1.8, 2.1, 2.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ -19.2157, -17.9784, -14.6937, -15.002, 15.0645, -13.4433, -16.1769, 2.95738, -19.2157 ] +} +tracks/14/type = "value" +tracks/14/path = NodePath("Sprite/Skeleton2D/Hip:position") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/keys = { +"times": PoolRealArray( 0, 0.3, 0.6, 0.9, 1.2, 1.5, 1.8, 2.1, 2.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ Vector2( -3, -11 ), Vector2( -3, -5 ), Vector2( -3, -26 ), Vector2( -3, -30 ), Vector2( -3, -11 ), Vector2( -3, -5 ), Vector2( -3, -11 ), Vector2( -3, -30 ), Vector2( -3, -11 ) ] +} +tracks/15/type = "value" +tracks/15/path = NodePath("Sprite/Skeleton2D/Hip/RightLeg/RightLowerLeg/RightFoot:rotation_degrees") +tracks/15/interp = 1 +tracks/15/loop_wrap = true +tracks/15/imported = false +tracks/15/enabled = true +tracks/15/keys = { +"times": PoolRealArray( 0, 0.3, 0.6, 0.9, 1.2, 1.5, 1.8, 2.1, 2.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 16.8793, -7.46142, -5.81507, -8.76219, -3.17026, 5.76248, -0.503692, -3.07496, 16.8793 ] +} +tracks/16/type = "value" +tracks/16/path = NodePath("Sprite/Skeleton2D/Hip/RightLeg/RightLowerLeg:rotation_degrees") +tracks/16/interp = 1 +tracks/16/loop_wrap = true +tracks/16/imported = false +tracks/16/enabled = true +tracks/16/keys = { +"times": PoolRealArray( 0, 0.3, 0.6, 0.9, 1.2, 1.5, 1.8, 2.1, 2.4 ), +"transitions": PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1 ), +"update": 0, +"values": [ 5.05738, 56.5283, 23.651, 19.9285, 18.8404, 18.8404, 86.8536, 42.6926, 5.05738 ] +} + +[sub_resource type="AnimationNodeAnimation" id=9] +animation = "fall" + +[sub_resource type="AnimationNodeAnimation" id=10] +animation = "fly" + +[sub_resource type="AnimationNodeAnimation" id=11] +animation = "idle" + +[sub_resource type="AnimationNodeOneShot" id=12] + +[sub_resource type="AnimationNodeAnimation" id=13] +animation = "jump" + +[sub_resource type="AnimationNodeOneShot" id=14] +fadein_time = 0.0 + +[sub_resource type="AnimationNodeAnimation" id=15] +animation = "land" + +[sub_resource type="AnimationNodeOneShot" id=16] +filter_enabled = true +filters = [ "Sprite/Skeleton2D/Hip/Chest/Head/Chin:rotation_degrees", "Sprite/Skeleton2D/Hip/Chest/Head:rotation_degrees", "Sprite/Skeleton2D/Hip/Chest/RightArm/RightForearm/RightHand:rotation_degrees", "Sprite/Skeleton2D/Hip/Chest/RightArm/RightForearm:rotation_degrees", "Sprite/Skeleton2D/Hip/Chest/RightArm:rotation_degrees", "Sprite/Skeleton2D/Hip/Chest:rotation_degrees", "Sprite/Skeleton2D/Hip/LeftLeg/LeftLowerLeg/LeftFoot:rotation_degrees", "Sprite/Skeleton2D/Hip/LeftLeg/LeftLowerLeg:rotation_degrees", "Sprite/Skeleton2D/Hip/LeftLeg:rotation_degrees", "Sprite/Skeleton2D/Hip/RightLeg/RightLowerLeg/RightFoot:rotation_degrees", "Sprite/Skeleton2D/Hip/RightLeg/RightLowerLeg:rotation_degrees", "Sprite/Skeleton2D/Hip/RightLeg:rotation_degrees", "Sprite/Skeleton2D/Hip:position", "Sprite/Skeleton2D/Hip:rotation_degrees" ] +fadein_time = 0.0 + +[sub_resource type="AnimationNodeAnimation" id=17] +animation = "land_hard" + +[sub_resource type="AnimationNodeAnimation" id=18] +animation = "run" + +[sub_resource type="AnimationNodeTimeScale" id=19] + +[sub_resource type="AnimationNodeTransition" id=20] +input_count = 5 +xfade_time = 0.1 +input_0/name = "idle" +input_0/auto_advance = false +input_1/name = "walk" +input_1/auto_advance = false +input_2/name = "run" +input_2/auto_advance = false +input_3/name = "fly" +input_3/auto_advance = false +input_4/name = "fall" +input_4/auto_advance = false + +[sub_resource type="AnimationNodeAnimation" id=21] +animation = "walk" + +[sub_resource type="AnimationNodeTimeScale" id=22] + +[sub_resource type="AnimationNodeBlendTree" id=23] +graph_offset = Vector2( -81.2169, -35.6349 ) +nodes/fall_animation/node = SubResource( 9 ) +nodes/fall_animation/position = Vector2( 200, 480 ) +nodes/fly_animation/node = SubResource( 10 ) +nodes/fly_animation/position = Vector2( 200, 360 ) +nodes/idle_animation/node = SubResource( 11 ) +nodes/idle_animation/position = Vector2( 200, 0 ) +nodes/jump/node = SubResource( 12 ) +nodes/jump/position = Vector2( 460, 160 ) +nodes/jump_animation/node = SubResource( 13 ) +nodes/jump_animation/position = Vector2( 660, 340 ) +nodes/land/node = SubResource( 14 ) +nodes/land/position = Vector2( 700, 160 ) +nodes/land_animation/node = SubResource( 15 ) +nodes/land_animation/position = Vector2( 700, 340 ) +nodes/land_hard/node = SubResource( 16 ) +nodes/land_hard/position = Vector2( 1140, 160 ) +nodes/land_hard_animation/node = SubResource( 17 ) +nodes/land_hard_animation/position = Vector2( 1140, 340 ) +nodes/output/position = Vector2( 1160, 160 ) +nodes/run_animation/node = SubResource( 18 ) +nodes/run_animation/position = Vector2( 0, 260 ) +nodes/run_timescale/node = SubResource( 19 ) +nodes/run_timescale/position = Vector2( 200, 240 ) +nodes/state/node = SubResource( 20 ) +nodes/state/position = Vector2( 260, 160 ) +nodes/walk_animation/node = SubResource( 21 ) +nodes/walk_animation/position = Vector2( 0, 140 ) +nodes/walk_timescale/node = SubResource( 22 ) +nodes/walk_timescale/position = Vector2( 200, 120 ) +node_connections = [ "state", 0, "idle_animation", "state", 1, "walk_timescale", "state", 2, "run_timescale", "state", 3, "fly_animation", "state", 4, "fall_animation", "output", 0, "land_hard", "land", 0, "jump", "land", 1, "land_animation", "jump", 0, "state", "jump", 1, "jump_animation", "land_hard", 0, "land", "land_hard", 1, "land_hard_animation", "run_timescale", 0, "run_animation", "walk_timescale", 0, "walk_animation" ] + +[sub_resource type="RectangleShape2D" id=24] +extents = Vector2( 11, 16.4358 ) + +[node name="SkeletalPlayer" type="KinematicBody2D"] +script = ExtResource( 1 ) +__meta__ = { +"_edit_horizontal_guides_": [ 379.019 ] +} + +[node name="AnimationPlayer" type="AnimationPlayer" parent="."] +anims/fall = SubResource( 1 ) +anims/fly = SubResource( 2 ) +anims/idle = SubResource( 3 ) +anims/jump = SubResource( 4 ) +anims/land = SubResource( 5 ) +anims/land_hard = SubResource( 6 ) +anims/run = SubResource( 7 ) +anims/walk = SubResource( 8 ) + +[node name="AnimationTree" type="AnimationTree" parent="."] +tree_root = SubResource( 23 ) +anim_player = NodePath("../AnimationPlayer") +parameters/jump/active = false +parameters/land/active = false +parameters/land_hard/active = false +parameters/run_timescale/scale = 1.0 +parameters/state/current = 0 +parameters/walk_timescale/scale = 0.1 + +[node name="Sprite" type="Node2D" parent="."] +position = Vector2( 0, -15 ) +scale = Vector2( 0.06, 0.06 ) + +[node name="Skeleton2D" type="Skeleton2D" parent="Sprite"] + +[node name="Hip" type="Bone2D" parent="Sprite/Skeleton2D"] +position = Vector2( -3, -18.5221 ) +rest = Transform2D( 1, 0, 0, 1, -3, -11 ) + +[node name="Chest" type="Bone2D" parent="Sprite/Skeleton2D/Hip"] +position = Vector2( 0, -32 ) +rest = Transform2D( 1, 0, 0, 1, 0, -32 ) + +[node name="Head" type="Bone2D" parent="Sprite/Skeleton2D/Hip/Chest"] +position = Vector2( 0, -160 ) +rest = Transform2D( 1, 0, 0, 1, 0, -160 ) + +[node name="Chin" type="Bone2D" parent="Sprite/Skeleton2D/Hip/Chest/Head"] +position = Vector2( 0, -49 ) +rotation = 0.00169551 +rest = Transform2D( 0.999999, 0.00169551, -0.00169551, 0.999999, 0, -49 ) +default_length = 60.0 + +[node name="RightArm" type="Bone2D" parent="Sprite/Skeleton2D/Hip/Chest"] +position = Vector2( 80, -100 ) +rotation = -1.74533 +rest = Transform2D( 1, 0, 0, 1, 80, -100 ) + +[node name="RightForearm" type="Bone2D" parent="Sprite/Skeleton2D/Hip/Chest/RightArm"] +position = Vector2( -11, 97 ) +rotation = -0.609531 +rest = Transform2D( 1, 0, 0, 1, -11, 97 ) + +[node name="RightHand" type="Bone2D" parent="Sprite/Skeleton2D/Hip/Chest/RightArm/RightForearm"] +position = Vector2( 13, 94 ) +rotation = 1.22745 +rest = Transform2D( 0.336639, 0.941634, -0.941634, 0.336639, 13, 94 ) +default_length = 60.0 + +[node name="LeftArm" type="Bone2D" parent="Sprite/Skeleton2D/Hip/Chest"] +position = Vector2( -100, -100 ) +rotation = 0.436332 +rest = Transform2D( 1, 0, 0, 1, -100, -100 ) + +[node name="LeftForearm" type="Bone2D" parent="Sprite/Skeleton2D/Hip/Chest/LeftArm"] +position = Vector2( -2, 95 ) +rotation = -0.554398 +rest = Transform2D( 1, 0, 0, 1, -2, 95 ) + +[node name="LeftHand" type="Bone2D" parent="Sprite/Skeleton2D/Hip/Chest/LeftArm/LeftForearm"] +position = Vector2( 9, 102 ) +rotation = 1.22983 +rest = Transform2D( 0.334394, 0.942433, -0.942433, 0.334394, 9, 102 ) +default_length = 60.0 + +[node name="LeftLeg" type="Bone2D" parent="Sprite/Skeleton2D/Hip"] +position = Vector2( -72, 26 ) +rotation = -0.65527 +rest = Transform2D( 1, 0, 0, 1, -72, 26 ) + +[node name="LeftLowerLeg" type="Bone2D" parent="Sprite/Skeleton2D/Hip/LeftLeg"] +position = Vector2( -13, 91 ) +rotation = 0.53105 +rest = Transform2D( 1, 0, 0, 1, -13, 91 ) + +[node name="LeftFoot" type="Bone2D" parent="Sprite/Skeleton2D/Hip/LeftLeg/LeftLowerLeg"] +position = Vector2( 7, 127 ) +rotation = 0.055174 +rest = Transform2D( 1, 0, 0, 1, 7, 127 ) +default_length = 60.0 + +[node name="RightLeg" type="Bone2D" parent="Sprite/Skeleton2D/Hip"] +position = Vector2( 46, 11 ) +rotation = 0.359249 +rest = Transform2D( 1, 0, 0, 1, 46, 11 ) + +[node name="RightLowerLeg" type="Bone2D" parent="Sprite/Skeleton2D/Hip/RightLeg"] +position = Vector2( -26, 94 ) +rotation = 0.336345 +rest = Transform2D( 1, 0, 0, 1, -26, 94 ) + +[node name="RightFoot" type="Bone2D" parent="Sprite/Skeleton2D/Hip/RightLeg/RightLowerLeg"] +position = Vector2( 2, 129 ) +rotation = -0.0939702 +rest = Transform2D( 1, 0, 0, 1, 2, 129 ) +default_length = 60.0 + +[node name="Polygons" type="Node2D" parent="Sprite"] +__meta__ = { +"_edit_group_": true +} + +[node name="RightArm" type="Polygon2D" parent="Sprite/Polygons"] +position = Vector2( -150, -240 ) +texture = ExtResource( 2 ) +skeleton = NodePath("../../Skeleton2D") +polygon = PoolVector2Array( 237.601, 31.7394, 217.703, 30.1435, 183.732, 47.8469, 274.303, 49.2926, 271.111, 94.5053, 183.877, 89.7181, 185.505, 166.856, 248.688, 172.323, 242.541, 187.015, 189.46, 182.958, 190.308, 202.449, 180.383, 225.837, 201.435, 321.531, 242.841, 196.76, 256.334, 215.801, 276.077, 283.732, 295.215, 310.526, 272.249, 351.675, 216.746, 356.459 ) +uv = PoolVector2Array( 235.407, 30.1435, 217.703, 30.1435, 183.732, 47.8469, 276.555, 49.2823, 274.641, 85.6459, 181.34, 83.7321, 184.689, 180.383, 253.11, 178.469, 243.541, 188.995, 188.038, 187.081, 188.995, 200, 180.383, 225.837, 201.435, 321.531, 244.976, 199.043, 259.809, 215.789, 276.077, 283.732, 295.215, 310.526, 272.249, 351.675, 216.746, 356.459 ) +polygons = [ PoolIntArray( 0, 1, 2, 5, 4, 3 ), PoolIntArray( 4, 7, 6, 5 ), PoolIntArray( 8, 7, 6, 9 ), PoolIntArray( 13, 8, 9, 10 ), PoolIntArray( 13, 14, 11, 10 ), PoolIntArray( 14, 15, 12, 11 ), PoolIntArray( 15, 16, 17, 18, 12 ) ] +bones = [ NodePath("Hip"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/RightArm"), PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 0.5, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/RightArm/RightForearm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0.5, 1, 1, 0.5, 1, 1, 0.5, 0, 0, 0 ), NodePath("Hip/Chest/RightArm/RightForearm/RightHand"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0, 0, 0.5, 1, 1, 1 ), NodePath("Hip/Chest/Head"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/Head/Chin"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/LeftArm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/LeftArm/LeftForearm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/LeftArm/LeftForearm/LeftHand"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg/LeftLowerLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg/LeftLowerLeg/LeftFoot"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightLeg/RightLowerLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightLeg/RightLowerLeg/RightFoot"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) ] +internal_vertex_count = 19 + +[node name="RightLeg" type="Polygon2D" parent="Sprite/Polygons"] +position = Vector2( -274, -409 ) +texture = ExtResource( 2 ) +skeleton = NodePath("../../Skeleton2D") +polygon = PoolVector2Array( 348.266, 400, 289.099, 380.833, 280.766, 435, 276.599, 470.833, 250.766, 515, 249.933, 604.167, 246.599, 690.833, 407.433, 695.833, 409.099, 659.167, 384.099, 606.667, 349.099, 599.167, 330.766, 550, 342.433, 476.667, 337.433, 442.5 ) +uv = PoolVector2Array( 348.266, 400, 289.099, 380.833, 280.766, 435, 276.599, 470.833, 250.766, 515, 249.933, 604.167, 246.599, 690.833, 407.433, 695.833, 409.099, 659.167, 384.099, 606.667, 349.099, 599.167, 330.766, 550, 342.433, 476.667, 337.433, 442.5 ) +polygons = [ PoolIntArray( 0, 1, 2, 13 ), PoolIntArray( 13, 12, 3, 2 ), PoolIntArray( 12, 11, 4, 3 ), PoolIntArray( 11, 10, 5, 4 ), PoolIntArray( 10, 9, 8, 7, 6, 5 ) ] +bones = [ NodePath("Hip"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/Head"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/Head/Chin"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftArm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftArm/LeftForearm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftArm/LeftForearm/LeftHand"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightArm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightArm/RightForearm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightArm/RightForearm/RightHand"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg/LeftLowerLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg/LeftLowerLeg/LeftFoot"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightLeg"), PoolRealArray( 1, 1, 1, 0.53, 0, 0, 0, 0, 0, 0, 0, 0, 0.53, 1 ), NodePath("Hip/RightLeg/RightLowerLeg"), PoolRealArray( 0, 0, 0, 0.53, 1, 1, 0, 0, 0, 0, 0, 1, 0.53, 0 ), NodePath("Hip/RightLeg/RightLowerLeg/RightFoot"), PoolRealArray( 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0.53, 0, 0, 0 ) ] +internal_vertex_count = 14 + +[node name="Body" type="Polygon2D" parent="Sprite/Polygons"] +position = Vector2( -436, -294 ) +texture = ExtResource( 2 ) +skeleton = NodePath("../../Skeleton2D") +polygon = PoolVector2Array( 473.936, 29.2553, 430.851, 19.6809, 384.043, 78.7234, 344.681, 107.447, 348.404, 192.553, 375.532, 240.426, 375, 255.319, 351.064, 269.681, 347.34, 294.681, 371.809, 334.574, 468.085, 347.872, 490.957, 296.809, 489.894, 276.596, 472.368, 259.211, 473.936, 245.745, 505.319, 222.34, 522.872, 179.787, 507.447, 121.809, 484.043, 84.0426, 398.404, 38.2979, 419.681, 344.149 ) +uv = PoolVector2Array( 473.936, 29.2553, 430.851, 19.6809, 384.043, 78.7234, 344.681, 107.447, 348.404, 192.553, 375.532, 240.426, 375, 255.319, 351.064, 269.681, 347.34, 294.681, 371.809, 334.574, 468.085, 347.872, 490.957, 296.809, 489.894, 276.596, 472.368, 259.211, 473.936, 245.745, 505.319, 222.34, 522.872, 179.787, 507.447, 121.809, 484.043, 84.0426, 398.404, 38.2979, 419.681, 344.149 ) +polygons = [ PoolIntArray( 2, 19, 1, 0, 18 ), PoolIntArray( 2, 3, 17, 18 ), PoolIntArray( 3, 4, 15, 16, 17 ), PoolIntArray( 4, 5, 14, 15 ), PoolIntArray( 5, 6, 13, 14 ), PoolIntArray( 6, 7, 12, 13 ), PoolIntArray( 7, 8, 11, 12 ), PoolIntArray( 8, 9, 20, 10, 11 ) ] +bones = [ NodePath("Hip"), PoolRealArray( 0, 0, 0, 0, 0, 0.51, 0.51, 1, 1, 1, 1, 1, 1, 0.51, 0.51, 0, 0, 0, 0, 0, 1 ), NodePath("Hip/Chest"), PoolRealArray( 1, 1, 1, 1, 1, 0.51, 0.51, 0, 0, 0, 0, 0, 0, 0.51, 0.51, 1, 1, 1, 1, 1, 0 ), NodePath("Hip/Chest/Head"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/Head/Chin"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftArm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftArm/LeftForearm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftArm/LeftForearm/LeftHand"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightArm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightArm/RightForearm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightArm/RightForearm/RightHand"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg/LeftLowerLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg/LeftLowerLeg/LeftFoot"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("RightLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("RightLeg/RightLowerLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("RightLeg/RightLowerLeg/RightFoot"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) ] +internal_vertex_count = 21 + +[node name="LeftLeg" type="Polygon2D" parent="Sprite/Polygons"] +position = Vector2( -153, -402 ) +texture = ExtResource( 2 ) +skeleton = NodePath("../../Skeleton2D") +polygon = PoolVector2Array( 65.7658, 390, 92.4325, 386.667, 119.099, 398.333, 119.099, 426.667, 120.766, 477.5, 107.433, 551.667, 129.099, 592.5, 163.266, 604.167, 188.266, 675, 173.266, 692.5, 20.7658, 686.667, 25.7658, 648.333, 29.9325, 608.333, 24.0992, 530.833, 54.9325, 472.5 ) +uv = PoolVector2Array( 65.7658, 390, 92.4325, 386.667, 119.099, 398.333, 119.099, 426.667, 120.766, 477.5, 107.433, 551.667, 129.099, 592.5, 163.266, 604.167, 188.266, 675, 173.266, 692.5, 20.7658, 686.667, 25.7658, 648.333, 29.9325, 608.333, 24.0992, 530.833, 54.9325, 472.5 ) +polygons = [ PoolIntArray( 0, 1, 2, 3, 4, 14 ), PoolIntArray( 4, 5, 13, 14 ), PoolIntArray( 5, 6, 12, 13 ), PoolIntArray( 6, 7, 8, 9, 10, 11, 12 ) ] +bones = [ NodePath("Hip"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/Head"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/Head/Chin"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftArm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftArm/LeftForearm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftArm/LeftForearm/LeftHand"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightArm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightArm/RightForearm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightArm/RightForearm/RightHand"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg"), PoolRealArray( 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg/LeftLowerLeg"), PoolRealArray( 0, 0, 0, 0, 0.03, 1, 0, 0, 0, 0, 0, 0, 0.53, 0.5, 0.03 ), NodePath("Hip/LeftLeg/LeftLowerLeg/LeftFoot"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0.53, 1, 1, 1, 1, 1, 0, 0, 0 ), NodePath("RightLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("RightLeg/RightLowerLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("RightLeg/RightLowerLeg/RightFoot"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) ] +internal_vertex_count = 15 + +[node name="Head" type="Polygon2D" parent="Sprite/Polygons"] +position = Vector2( -652, -778 ) +texture = ExtResource( 2 ) +skeleton = NodePath("../../Skeleton2D") +polygon = PoolVector2Array( 616.26, 246.341, 555.285, 285.366, 508.13, 330.894, 482.114, 380.488, 482.114, 448.781, 492.683, 498.374, 552.846, 534.146, 656.911, 538.211, 773.984, 511.382, 807.317, 506.504, 813.821, 342.276, 789.431, 297.561, 757.724, 269.106, 669.106, 249.594 ) +uv = PoolVector2Array( 616.26, 246.341, 555.285, 285.366, 508.13, 330.894, 482.114, 380.488, 482.114, 448.781, 492.683, 498.374, 552.846, 534.146, 656.911, 538.211, 773.984, 511.382, 807.317, 506.504, 813.821, 342.276, 789.431, 297.561, 757.724, 269.106, 669.106, 249.594 ) +polygons = [ PoolIntArray( 10, 11, 12, 13, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 ) ] +bones = [ NodePath("Hip"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/Head"), PoolRealArray( 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ), NodePath("Hip/Chest/Head/Chin"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftArm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftArm/LeftForearm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftArm/LeftForearm/LeftHand"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightArm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightArm/RightForearm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightArm/RightForearm/RightHand"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg/LeftLowerLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg/LeftLowerLeg/LeftFoot"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("RightLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("RightLeg/RightLowerLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("RightLeg/RightLowerLeg/RightFoot"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) ] +internal_vertex_count = 14 + +[node name="Chin" type="Polygon2D" parent="Sprite/Polygons"] +position = Vector2( -133, -265 ) +offset = Vector2( -516, -603 ) +texture = ExtResource( 2 ) +skeleton = NodePath("../../Skeleton2D") +polygon = PoolVector2Array( 486, 576, 812, 562, 823, 605, 790, 666, 722, 690, 547, 686, 493, 646 ) +uv = PoolVector2Array( 486, 576, 812, 562, 823, 605, 790, 666, 722, 690, 547, 686, 493, 646 ) +polygons = [ PoolIntArray( 0, 1, 2, 3, 4, 5, 6 ) ] +bones = [ NodePath("Hip"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/Head"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/Head/Chin"), PoolRealArray( 1, 1, 1, 1, 1, 1, 1 ), NodePath("Hip/LeftArm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftArm/LeftForearm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftArm/LeftForearm/LeftHand"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightArm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightArm/RightForearm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightArm/RightForearm/RightHand"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg/LeftLowerLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg/LeftLowerLeg/LeftFoot"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), NodePath("RightLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), NodePath("RightLeg/RightLowerLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ), NodePath("RightLeg/RightLowerLeg/RightFoot"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0 ) ] +internal_vertex_count = 7 + +[node name="LeftArm" type="Polygon2D" parent="Sprite/Polygons"] +position = Vector2( -168, -240 ) +texture = ExtResource( 2 ) +skeleton = NodePath("../../Skeleton2D") +polygon = PoolVector2Array( 89.9521, 16.268, 77.5119, 15.7895, 55.5023, 25.8373, 39.2344, 29.1866, 33.9712, 59.3302, 27.2727, 154.545, 29.1865, 180.861, 33.4928, 196.172, 20.5741, 240.67, 36.842, 321.531, 61.244, 359.809, 125.837, 353.11, 137.799, 309.569, 122.967, 287.56, 106.22, 202.871, 92.3444, 191.866, 91.866, 179.426, 127.273, 70.3349, 134.928, 48.3254, 119.617, 30.622 ) +uv = PoolVector2Array( 89.9521, 16.268, 77.5119, 15.7895, 55.5023, 25.8373, 39.2344, 29.1866, 33.9712, 59.3302, 27.2727, 154.545, 29.1865, 180.861, 33.4928, 196.172, 20.5741, 240.67, 36.842, 321.531, 61.244, 359.809, 125.837, 353.11, 137.799, 309.569, 122.967, 287.56, 106.22, 202.871, 92.3444, 191.866, 91.866, 179.426, 127.273, 70.3349, 134.928, 48.3254, 119.617, 30.622 ) +polygons = [ PoolIntArray( 3, 2, 1, 0, 19, 18, 17, 4 ), PoolIntArray( 4, 5, 16, 17 ), PoolIntArray( 16, 15, 7, 6 ), PoolIntArray( 16, 6, 5 ), PoolIntArray( 7, 8, 14, 15 ), PoolIntArray( 14, 13, 9, 8 ), PoolIntArray( 13, 12, 11, 10, 9 ) ] +bones = [ NodePath("Hip"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/RightArm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/RightArm/RightForearm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/RightArm/RightForearm/RightHand"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/Head"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/Head/Chin"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/Chest/LeftArm"), PoolRealArray( 1, 1, 1, 1, 1, 0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 1, 1, 1 ), NodePath("Hip/Chest/LeftArm/LeftForearm"), PoolRealArray( 0, 0, 0, 0, 0, 0, 1, 1, 1, 0.5, 0, 0, 0, 0.5, 1, 1, 0.5, 0, 0, 0 ), NodePath("Hip/Chest/LeftArm/LeftForearm/LeftHand"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 1, 1, 1, 0.5, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg/LeftLowerLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/LeftLeg/LeftLowerLeg/LeftFoot"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightLeg/RightLowerLeg"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ), NodePath("Hip/RightLeg/RightLowerLeg/RightFoot"), PoolRealArray( 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ) ] +internal_vertex_count = 20 + +[node name="CollisionShape2D" type="CollisionShape2D" parent="."] +position = Vector2( 0.776211, -16.4722 ) +shape = SubResource( 24 ) + +[node name="Camera2D" type="Camera2D" parent="."] +position = Vector2( 0, -32 ) +current = true +zoom = Vector2( 0.25, 0.25 ) diff --git a/2d/skeleton/project.godot b/2d/skeleton/project.godot new file mode 100644 index 00000000..47d6b355 --- /dev/null +++ b/2d/skeleton/project.godot @@ -0,0 +1,90 @@ +; Engine configuration file. +; It's best edited using the editor UI and not directly, +; since the parameters that go here are not all obvious. +; +; Format: +; [section] ; section goes between [] +; param=value ; assign values to parameters + +config_version=4 + +_global_script_classes=[ { +"base": "KinematicBody2D", +"class": "Player", +"language": "GDScript", +"path": "res://player/player.gd" +} ] +_global_script_class_icons={ +"Player": "" +} + +[application] + +config/name="Skeleton2D Demo" +run/main_scene="res://level.tscn" +config/icon="res://icon.png" + +[display] + +window/size/width=1600 +window/size/height=900 +window/dpi/allow_hidpi=true +window/stretch/mode="2d" +window/stretch/aspect="keep_height" + +[input] + +move_left={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":65,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777231,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":-1.0,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":14,"pressure":0.0,"pressed":false,"script":null) + ] +} +move_right={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":68,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777233,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":0,"axis_value":1.0,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":15,"pressure":0.0,"pressed":false,"script":null) + ] +} +jump={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":32,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":0,"pressure":0.0,"pressed":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":87,"unicode":0,"echo":false,"script":null) +, Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777232,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadMotion,"resource_local_to_scene":false,"resource_name":"","device":0,"axis":1,"axis_value":-1.0,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":12,"pressure":0.0,"pressed":false,"script":null) + ] +} +exit={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777217,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":11,"pressure":0.0,"pressed":false,"script":null) + ] +} +walk={ +"deadzone": 0.5, +"events": [ Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":0,"alt":false,"shift":false,"control":false,"meta":false,"command":false,"pressed":false,"scancode":16777237,"unicode":0,"echo":false,"script":null) +, Object(InputEventJoypadButton,"resource_local_to_scene":false,"resource_name":"","device":0,"button_index":1,"pressure":0.0,"pressed":false,"script":null) + ] +} + +[network] + +limits/debugger_stdout/max_chars_per_second=1000000 + +[physics] + +2d/default_gravity=900 + +[rendering] + +quality/driver/driver_name="GLES2" +2d/snapping/use_gpu_pixel_snap=true +vram_compression/import_etc=true +vram_compression/import_etc2=false +quality/2d/use_pixel_snap=true diff --git a/2d/skeleton/screenshots/.gdignore b/2d/skeleton/screenshots/.gdignore new file mode 100644 index 00000000..e69de29b