diff --git a/materials/tile/stone_wall.tres b/materials/tile/stone_wall.tres new file mode 100644 index 0000000..7852213 --- /dev/null +++ b/materials/tile/stone_wall.tres @@ -0,0 +1,9 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://bekoyi2mq1aiw"] + +[ext_resource type="Texture2D" uid="uid://cubqnw40nk224" path="res://textures/tile/stone_wall.png" id="1_r8c0v"] + +[resource] +albedo_texture = ExtResource("1_r8c0v") +uv1_scale = Vector3(0.5, 0.5, 0.5) +uv1_triplanar = true +texture_filter = 0 diff --git a/materials/tile/stone_wall_small_rock.tres b/materials/tile/stone_wall_small_rock.tres new file mode 100644 index 0000000..3d03f6c --- /dev/null +++ b/materials/tile/stone_wall_small_rock.tres @@ -0,0 +1,9 @@ +[gd_resource type="StandardMaterial3D" format=3 uid="uid://covj5ljosv6pt"] + +[ext_resource type="Texture2D" uid="uid://b1iebalulbl7d" path="res://textures/tile/stone_wall_small_rock.png" id="1_mv5se"] + +[resource] +albedo_texture = ExtResource("1_mv5se") +uv1_scale = Vector3(0.5, 0.5, 0.5) +uv1_triplanar = true +texture_filter = 0 diff --git a/project.godot b/project.godot index abf0fbd..3575650 100644 --- a/project.godot +++ b/project.godot @@ -20,10 +20,18 @@ config/icon="res://icon.svg" Global="*uid://4hvgybxt05qj" LimboConsole="*uid://dyxornv8vwibg" +[editor] + +movie_writer/movie_file="/home/lukas/Videos/movie/movie.avi" + [editor_plugins] enabled=PackedStringArray("res://addons/godot_super-wakatime/plugin.cfg", "res://addons/limbo_console/plugin.cfg") +[global_group] + +navigation_mesh_source_group="" + [input] move_left={ @@ -81,6 +89,11 @@ limbo_console_search_history={ ] } +[navigation] + +3d/default_cell_size=0.05 +3d/default_cell_height=0.05 + [physics] 3d/physics_engine="Jolt Physics" diff --git a/scenes/game.tscn b/scenes/game.tscn index 74f6c62..6d623e8 100644 --- a/scenes/game.tscn +++ b/scenes/game.tscn @@ -4,13 +4,23 @@ [ext_resource type="Script" uid="uid://crf3d7dpjvlsl" path="res://scripts/player_camera.gd" id="1_lnu2h"] [ext_resource type="Script" uid="uid://66iq60cxqomg" path="res://scripts/player.gd" id="1_yqjtg"] [ext_resource type="Material" uid="uid://bivt02tm06osv" path="res://materials/tile/stone_floor.tres" id="2_gee14"] +[ext_resource type="Material" uid="uid://bekoyi2mq1aiw" path="res://materials/tile/stone_wall.tres" id="3_dinhu"] +[ext_resource type="Material" uid="uid://covj5ljosv6pt" path="res://materials/tile/stone_wall_small_rock.tres" id="4_kvuet"] [ext_resource type="Texture2D" uid="uid://b6krbvbco0jt6" path="res://textures/shadow.png" id="4_lbhrr"] -[ext_resource type="PackedScene" uid="uid://cnii80nh1mxr2" path="res://scenes/assets/dreamer_body.tscn" id="4_p57ef"] +[ext_resource type="PackedScene" uid="uid://cnii80nh1mxr2" path="res://scenes/living/dreamer_body.tscn" id="4_p57ef"] [ext_resource type="PackedScene" uid="uid://b0kty7juk7rfo" path="res://models/stalagmite.gltf" id="5_iywne"] -[ext_resource type="PackedScene" uid="uid://co5p7h3exggvh" path="res://scenes/enemies/slime.tscn" id="6_u5sy4"] +[ext_resource type="PackedScene" uid="uid://co5p7h3exggvh" path="res://scenes/living/slime.tscn" id="6_u5sy4"] [ext_resource type="PackedScene" uid="uid://b6otq05jy7m6d" path="res://scenes/prefabs/brightshroom.tscn" id="9_vtaks"] [ext_resource type="PackedScene" uid="uid://boelsm35tk0k6" path="res://scenes/prefabs/brightshroom_orange.tscn" id="10_kvpfn"] [ext_resource type="PackedScene" uid="uid://b2w6hcvr8mimm" path="res://scenes/effects/damage_text.tscn" id="11_kvpfn"] +[ext_resource type="Script" uid="uid://vi18m3j6f6fa" path="res://scripts/enemies/dreamer.gd" id="12_trtic"] + +[sub_resource type="NavigationMesh" id="NavigationMesh_kvuet"] +vertices = PackedVector3Array(-7.5, 0.55766946, -7.5, -7.5, 0.55766946, 7.5, -6.5, 0.55766946, 7.5, -6.5, 0.55766946, -7.5, -5.5, 6.5576696, -7.5, -5.5, 6.5576696, 7.5, -4.45, 6.5576696, 7.5, -4.45, 6.5576696, -7.5, -2.1, 0.55766946, -1.75, -1.6999998, 0.55766946, -0.6999998, -1.4499998, 0.55766946, -0.5499997, 0.8000002, 0.55766946, -1.5499997, 1.1500006, 0.55766946, -1.7999997, 0.75, 0.55766946, -0.6999998, 0.6999998, 0.55766946, -1.3499999, -2.5499997, 0.6576695, -2.1, -2.35, 0.55766946, -2, 1.5, 0.55766946, -1.7999997, 1.5, 0.55766946, -7.5, -3.0499997, 0.9076695, -7.5, -2.4812498, 0.55766946, -7.5, -1.9985709, 0.55766946, -2.6038594, -2.303679, 0.55766946, -3.802743, -3.0499997, 0.9076695, -2.1, 2.1500006, 0.55766946, -0.5999999, 2.9499998, 0.55766946, 1.25, 3.1000004, 0.55766946, 1.1500006, 2.25, 0.55766946, -0.75, 1.8000002, 0.55766946, -1.7999997, 5.25, 0.55766946, 1.4000006, 5.3500004, 0.55766946, 1.9000006, 7.5, 0.55766946, 1.8500004, 2.25, 0.55766946, -1.3499999, 4.9000006, 0.55766946, 1.1500006, 2.1500006, 0.55766946, -1.5499997, 7.5, 0.55766946, -7.5, 1.3000002, 2.5576694, -1.1999998, 1.3000002, 2.5576694, -0.8499999, 1.6000004, 2.5576694, -0.8499999, 1.6000004, 2.6076694, -1.1999998, -1.25, 0.55766946, -0.4000001, -0.5499997, 0.55766946, 0.8500004, 1, 0.55766946, -0.4000001, -0.3499999, 0.55766946, 1.4000006, -0.7999997, 0.55766946, 1.9000006, -0.19999981, 0.55766946, 2.25, -0.3499999, 0.55766946, 1.1999998, 0.15000057, 0.55766946, 2.75, 2.6500006, 0.55766946, 1.6000004, 1.8000002, 0.55766946, -0.2999997, 1.1500006, 0.55766946, -0.2999997, 2.6500006, 0.55766946, 2.75, -3.25, 1.9576695, -0.4000001, -3.25, 1.9576695, 0.10000038, -3.1, 2.0576694, 0.05000019, -3.35, 1.8076694, 1.6000004, -3.35, 1.8076694, 2.75, -2.65, 1.6076694, 2.5, -3, 1.7076695, 1.5, 5.3500004, 0.55766946, 3.1000004, 7.5, 0.55766946, 3.1500006, -0.6500001, 0.55766946, 4.1500006, -0.5499997, 0.55766946, 4.25, -0.099999905, 0.55766946, 3.8500004, 0.05000019, 0.55766946, 3.1500006, 0.6000004, 0.55766946, 3.8500004, 2.75, 0.55766946, 3.5500002, 2.6500006, 0.55766946, 3.4000006, 0.19999981, 0.55766946, 3.75, -0.4499998, 7.0576696, 3.0500002, -0.4499998, 7.0576696, 3.9499998, 0.4499998, 7.0576696, 3.9499998, 0.4499998, 7.0576696, 3.0500002, 5.3500004, 0.55766946, 3.4000006, 5.1000004, 0.55766946, 3.75, 4.6500006, 0.55766946, 7.5, 7.5, 0.55766946, 7.5, 4.6000004, 0.55766946, 3.8500004, 0.9000006, 0.55766946, 4.2, 2.9499998, 0.55766946, 3.75, 1.0500002, 0.55766946, 4.5, 3.1000004, 0.55766946, 3.8500004, 0.9499998, 0.55766946, 5, 0.40000057, 0.55766946, 5.3500004, 0.15000057, 0.55766946, 7.5, 3.3500004, 0.55766946, 7.5, 3.4000006, 0.55766946, 3.8500004, 0.15000057, 0.55766946, 5.4000006, -0.5999999, 0.55766946, 4.6000004, -1, 0.55766946, 4.6000004, -1.9000001, 0.55766946, 7.25, -2.5, 0.6076694, 7.5, -1.1999998, 0.55766946, 4.7, -0.3499999, 0.55766946, 5.1500006, -1.5, 0.55766946, 4.6500006, -1.2999997, 0.55766946, 5.3500004, -0.19999981, 0.55766946, 5.3, -1.5999999, 0.55766946, 5.75, -1.5999999, 0.55766946, 6.8500004, -1.9000001, 0.55766946, 5.8500004, -0.049999714, 2.5576694, 4.45, 0.05000019, 2.5576694, 4.75, 0.4499998, 2.6076694, 4.6500006, 0.35000038, 2.6076694, 4.3, -3.25, 1.9576695, 4.6000004, -3.25, 1.9576695, 5.1500006, -3.1, 2.0576694, 5.1000004, -3.2999997, 1.8076694, 6.7, -2.75, 1.7076695, 6.55, -2.9, 1.7576694, 6, -3.2999997, 1.8076694, 5.8) +polygons = [PackedInt32Array(3, 2, 0), PackedInt32Array(0, 2, 1), PackedInt32Array(7, 6, 4), PackedInt32Array(4, 6, 5), PackedInt32Array(9, 8, 10), PackedInt32Array(10, 8, 11), PackedInt32Array(11, 8, 12), PackedInt32Array(14, 13, 10), PackedInt32Array(11, 14, 10), PackedInt32Array(20, 22, 19), PackedInt32Array(19, 22, 15), PackedInt32Array(15, 21, 16), PackedInt32Array(16, 21, 12), PackedInt32Array(12, 18, 17), PackedInt32Array(18, 22, 20), PackedInt32Array(22, 21, 15), PackedInt32Array(21, 22, 12), PackedInt32Array(12, 22, 18), PackedInt32Array(15, 23, 19), PackedInt32Array(12, 8, 16), PackedInt32Array(25, 24, 26), PackedInt32Array(26, 24, 27), PackedInt32Array(28, 17, 18), PackedInt32Array(31, 30, 29), PackedInt32Array(27, 32, 26), PackedInt32Array(26, 32, 33), PackedInt32Array(31, 29, 33), PackedInt32Array(34, 28, 18), PackedInt32Array(32, 34, 33), PackedInt32Array(33, 34, 31), PackedInt32Array(31, 34, 18), PackedInt32Array(31, 18, 35), PackedInt32Array(39, 38, 36), PackedInt32Array(36, 38, 37), PackedInt32Array(40, 10, 13), PackedInt32Array(42, 41, 13), PackedInt32Array(13, 41, 40), PackedInt32Array(45, 44, 43), PackedInt32Array(43, 46, 45), PackedInt32Array(45, 46, 47), PackedInt32Array(49, 48, 50), PackedInt32Array(50, 48, 51), PackedInt32Array(50, 51, 46), PackedInt32Array(46, 51, 47), PackedInt32Array(24, 25, 49), PackedInt32Array(49, 25, 48), PackedInt32Array(42, 50, 41), PackedInt32Array(41, 50, 46), PackedInt32Array(54, 53, 52), PackedInt32Array(58, 57, 55), PackedInt32Array(55, 57, 56), PackedInt32Array(30, 31, 59), PackedInt32Array(59, 31, 60), PackedInt32Array(62, 61, 63), PackedInt32Array(63, 61, 64), PackedInt32Array(67, 66, 65), PackedInt32Array(68, 63, 64), PackedInt32Array(68, 64, 65), PackedInt32Array(65, 64, 47), PackedInt32Array(65, 47, 67), PackedInt32Array(67, 47, 51), PackedInt32Array(72, 71, 69), PackedInt32Array(69, 71, 70), PackedInt32Array(73, 59, 60), PackedInt32Array(73, 60, 74), PackedInt32Array(74, 60, 76), PackedInt32Array(74, 76, 75), PackedInt32Array(75, 77, 74), PackedInt32Array(79, 78, 66), PackedInt32Array(66, 78, 65), PackedInt32Array(81, 80, 79), PackedInt32Array(79, 80, 78), PackedInt32Array(83, 82, 84), PackedInt32Array(84, 82, 85), PackedInt32Array(85, 82, 86), PackedInt32Array(83, 84, 87), PackedInt32Array(81, 86, 80), PackedInt32Array(80, 86, 82), PackedInt32Array(86, 77, 85), PackedInt32Array(85, 77, 75), PackedInt32Array(62, 88, 61), PackedInt32Array(61, 88, 89), PackedInt32Array(90, 84, 91), PackedInt32Array(89, 88, 92), PackedInt32Array(92, 88, 93), PackedInt32Array(94, 92, 95), PackedInt32Array(95, 92, 93), PackedInt32Array(95, 93, 96), PackedInt32Array(96, 87, 95), PackedInt32Array(95, 87, 97), PackedInt32Array(97, 87, 98), PackedInt32Array(98, 87, 84), PackedInt32Array(84, 90, 98), PackedInt32Array(97, 98, 99), PackedInt32Array(101, 100, 102), PackedInt32Array(102, 100, 103), PackedInt32Array(106, 105, 104), PackedInt32Array(108, 107, 109), PackedInt32Array(109, 107, 110)] +geometry_source_geometry_mode = 1 +cell_size = 0.05 +cell_height = 0.05 [sub_resource type="CameraAttributesPractical" id="CameraAttributesPractical_yqjtg"] @@ -21,6 +31,9 @@ size = Vector3(1.2, 1, 1.3) radius = 0.15 height = 1.0 +[sub_resource type="BoxShape3D" id="BoxShape3D_trtic"] +size = Vector3(0.65, 1, 0.65) + [sub_resource type="Environment" id="Environment_uwrxv"] background_mode = 1 background_color = Color(0.21272367, 0.00026760699, 0.30778188, 1) @@ -30,7 +43,15 @@ volumetric_fog_enabled = true [node name="Game" type="Node3D" unique_id=1358608749] script = ExtResource("1_gee14") -[node name="CSGBox3D" type="CSGBox3D" parent="." unique_id=1781956012] +[node name="Navmesh" type="NavigationRegion3D" parent="." unique_id=1857418222] +visible = false +navigation_mesh = SubResource("NavigationMesh_kvuet") + +[node name="Map" type="Node3D" parent="." unique_id=19914124 groups=["navigation_mesh_source_group"]] + +[node name="CSG" type="Node3D" parent="Map" unique_id=1150408155] + +[node name="CSGBox3D" type="CSGBox3D" parent="Map/CSG" unique_id=1781956012] layers = 1023 use_collision = true collision_layer = 255 @@ -38,6 +59,97 @@ collision_mask = 255 size = Vector3(16, 1, 16) material = ExtResource("2_gee14") +[node name="CSGBox3D2" type="CSGBox3D" parent="Map/CSG" unique_id=1285894233] +layers = 1023 +use_collision = true +collision_layer = 255 +collision_mask = 255 +size = Vector3(16, 1, 16) +material = ExtResource("2_gee14") + +[node name="CSGBox3D3" type="CSGBox3D" parent="Map/CSG" unique_id=646817034] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -5, 3, 0) +layers = 1023 +use_collision = true +collision_layer = 255 +collision_mask = 255 +size = Vector3(2, 7, 16) +material = ExtResource("3_dinhu") + +[node name="CSGBox3D6" type="CSGBox3D" parent="Map/CSG" unique_id=647905404] +transform = Transform3D(0.85165083, -0.42261833, 0.30997553, 0.39713126, 0.90630776, 0.14454395, -0.34202015, 0, 0.93969274, -3.2622721, 0.7556524, 4.6872506) +layers = 1023 +use_collision = true +collision_layer = 255 +collision_mask = 255 +size = Vector3(2, 2, 2) +material = ExtResource("4_kvuet") + +[node name="CSGBox3D9" type="CSGBox3D" parent="Map/CSG" unique_id=805609263] +transform = Transform3D(0.85165083, -0.42261833, 0.30997553, 0.39713126, 0.90630776, 0.14454395, -0.34202015, 0, 0.93969274, -3.2622721, 0.7556524, -0.3127494) +layers = 1023 +use_collision = true +collision_layer = 255 +collision_mask = 255 +size = Vector3(2, 2, 2) +material = ExtResource("4_kvuet") + +[node name="CSGBox3D7" type="CSGBox3D" parent="Map/CSG" unique_id=2127978297] +transform = Transform3D(-0.90767354, 0.2588191, -0.330366, 0.24321029, 0.96592575, 0.088521294, 0.3420201, 3.7856495e-08, -0.9396926, -3.5780458, 0.7556524, 2.1872506) +layers = 1023 +use_collision = true +collision_layer = 255 +collision_mask = 255 +size = Vector3(2, 2, 2) +material = ExtResource("4_kvuet") + +[node name="CSGBox3D8" type="CSGBox3D" parent="Map/CSG" unique_id=1149175002] +transform = Transform3D(-0.9254167, 0.17364825, -0.33682403, 0.16317584, 0.98480767, 0.05939115, 0.3420201, 3.7856495e-08, -0.9396926, -3.5780458, 0.7556524, 6.1872506) +layers = 1023 +use_collision = true +collision_layer = 255 +collision_mask = 255 +size = Vector3(2, 2, 2) +material = ExtResource("4_kvuet") + +[node name="CSGBox3D4" type="CSGBox3D" parent="Map/CSG" unique_id=1670932518] +transform = Transform3D(0.9396926, -0.34202012, 0, 0.34202012, 0.9396926, 0, 0, 0, 1, -4, 1, 0) +layers = 1023 +use_collision = true +collision_layer = 255 +collision_mask = 255 +size = Vector3(1, 3, 16) +material = ExtResource("3_dinhu") + +[node name="CSGBox3D5" type="CSGBox3D" parent="Map/CSG" unique_id=1498895198] +transform = Transform3D(0.5000001, -0.86602545, 0, 0.86602545, 0.5000001, 0, 0, 0, 1, -3.5, 0.5, 0) +layers = 1023 +use_collision = true +collision_layer = 255 +collision_mask = 255 +size = Vector3(1, 3, 16) +material = ExtResource("4_kvuet") + +[node name="Props" type="Node3D" parent="Map" unique_id=2137952764] + +[node name="Stalagmite" parent="Map/Props" unique_id=39322424 instance=ExtResource("5_iywne")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 4, 0.48141205, 2.5) + +[node name="Stalagmite4" parent="Map/Props" unique_id=1700522460 instance=ExtResource("5_iywne")] +transform = Transform3D(-1, -8.742278e-08, 0, 8.742278e-08, -1, 0, 0, 0, 1, 0, 6.981412, 3.5) + +[node name="Stalagmite2" parent="Map/Props" unique_id=703385516 instance=ExtResource("5_iywne")] +transform = Transform3D(0.81915206, 0, -0.57357645, 0, 1, 0, 0.57357645, 0, 0.81915206, -1.5, 0.48141205, 3) + +[node name="Stalagmite3" parent="Map/Props" unique_id=370634587 instance=ExtResource("5_iywne")] +transform = Transform3D(0.50000006, 0, -0.86602557, 0, 0.9, 0, 0.86602557, 0, 0.50000006, -2, 0.48141205, 1) + +[node name="blockbench_export" parent="Map/Props" unique_id=1509742770 instance=ExtResource("9_vtaks")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.4827318, 0.4921612, -1.048477) + +[node name="blockbench_export2" parent="Map/Props" unique_id=992880863 instance=ExtResource("10_kvpfn")] +transform = Transform3D(0.34202015, 0, -0.9396926, 0, 1, 0, 0.9396926, 0, 0.34202015, 0.2356708, 0.49367946, 4.5695834) + [node name="PlayerCamera" type="Camera3D" parent="." unique_id=1101523944] transform = Transform3D(0.7071067, -0.40557978, 0.5792279, 0, 0.819152, 0.5735764, -0.7071067, -0.40557978, 0.5792279, 4, 6.5, 4) attributes = SubResource("CameraAttributesPractical_yqjtg") @@ -73,17 +185,43 @@ shape = SubResource("CapsuleShape3D_yqjtg") [node name="Floorcast" type="RayCast3D" parent="Player" unique_id=991770843] target_position = Vector3(0, -16, 0) +[node name="Dreamer" type="CharacterBody3D" parent="." unique_id=1925258977] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, -4.5) +collision_layer = 2 +collision_mask = 2 +script = ExtResource("12_trtic") + +[node name="HitCollision" type="Area3D" parent="Dreamer" unique_id=1754593615] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1500001, 0) +collision_layer = 0 +collision_mask = 2 + +[node name="Shape" type="CollisionShape3D" parent="Dreamer/HitCollision" unique_id=1642136717] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 0, 0) +shape = SubResource("BoxShape3D_trtic") + +[node name="DreamerBody" parent="Dreamer" unique_id=595793987 instance=ExtResource("4_p57ef")] + +[node name="Shadow" type="Sprite3D" parent="Dreamer" unique_id=701404522] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2, 0) +modulate = Color(1, 1, 1, 0.5764706) +pixel_size = 0.03 +axis = 1 +texture_filter = 0 +texture = ExtResource("4_lbhrr") + +[node name="Collision" type="CollisionShape3D" parent="Dreamer" unique_id=555914177] +shape = SubResource("CapsuleShape3D_yqjtg") + +[node name="Floorcast" type="RayCast3D" parent="Dreamer" unique_id=844808342] +target_position = Vector3(0, -16, 0) + +[node name="Navigator" type="NavigationAgent3D" parent="Dreamer" unique_id=1232298712] +path_postprocessing = 2 +debug_enabled = true + [node name="Slime" parent="." unique_id=393738189 instance=ExtResource("6_u5sy4")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 3, -3.81) - -[node name="Stalagmite" parent="." unique_id=39322424 instance=ExtResource("5_iywne")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.48141205, 3) - -[node name="blockbench_export" parent="." unique_id=1509742770 instance=ExtResource("9_vtaks")] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 1.4827318, 0.4921612, -1.048477) - -[node name="blockbench_export2" parent="." unique_id=992880863 instance=ExtResource("10_kvpfn")] -transform = Transform3D(0.34202015, 0, -0.9396926, 0, 1, 0, 0.9396926, 0, 0.34202015, 2.7356708, 0.49367946, 3.0695834) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 2, 3, -3.81) [node name="WorldEnvironment" type="WorldEnvironment" parent="." unique_id=1956400862] environment = SubResource("Environment_uwrxv") diff --git a/scenes/assets/dreamer_body.tscn b/scenes/living/dreamer_body.tscn similarity index 63% rename from scenes/assets/dreamer_body.tscn rename to scenes/living/dreamer_body.tscn index 47b4f70..c8042e0 100644 --- a/scenes/assets/dreamer_body.tscn +++ b/scenes/living/dreamer_body.tscn @@ -1,8 +1,10 @@ [gd_scene format=3 uid="uid://cnii80nh1mxr2"] [ext_resource type="Texture2D" uid="uid://dp3jbqmr5toth" path="res://textures/character-body.png" id="1_06ej8"] +[ext_resource type="Script" uid="uid://c8sptss1aulmi" path="res://scripts/dreamer_body.gd" id="1_54k0m"] [ext_resource type="Texture2D" uid="uid://3ptkafoafq14" path="res://textures/character-leg.png" id="2_54k0m"] [ext_resource type="Texture2D" uid="uid://rgxhw23471ut" path="res://textures/character-arm.png" id="3_yptk5"] +[ext_resource type="Texture2D" uid="uid://cvtipichutylm" path="res://textures/test-sword.png" id="5_54k0m"] [sub_resource type="Animation" id="Animation_gee14"] length = 0.001 @@ -97,10 +99,10 @@ tracks/7/path = NodePath("Body/ArmPivot/FrontArm:position") tracks/7/interp = 1 tracks/7/loop_wrap = true tracks/7/keys = { -"times": PackedFloat32Array(), -"transitions": PackedFloat32Array(), +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), "update": 0, -"values": [] +"values": [Vector3(0.089999996, 0, 0)] } tracks/8/type = "value" tracks/8/imported = false @@ -121,10 +123,70 @@ tracks/9/path = NodePath("Body/ArmPivot/BackArm:position") tracks/9/interp = 1 tracks/9/loop_wrap = true tracks/9/keys = { -"times": PackedFloat32Array(), -"transitions": PackedFloat32Array(), +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), "update": 0, -"values": [] +"values": [Vector3(-0.089999996, 0, 0)] +} +tracks/10/type = "value" +tracks/10/imported = false +tracks/10/enabled = true +tracks/10/path = NodePath("Body/ArmPivot/FrontArm:position:z") +tracks/10/interp = 1 +tracks/10/loop_wrap = true +tracks/10/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0.0] +} +tracks/11/type = "value" +tracks/11/imported = false +tracks/11/enabled = true +tracks/11/path = NodePath("Body/ArmPivot/BackArm:position:z") +tracks/11/interp = 1 +tracks/11/loop_wrap = true +tracks/11/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0.0] +} +tracks/12/type = "value" +tracks/12/imported = false +tracks/12/enabled = true +tracks/12/path = NodePath("Body/BackLeg:position:z") +tracks/12/interp = 1 +tracks/12/loop_wrap = true +tracks/12/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0.0] +} +tracks/13/type = "value" +tracks/13/imported = false +tracks/13/enabled = true +tracks/13/path = NodePath("Body/FrontLeg:position:z") +tracks/13/interp = 1 +tracks/13/loop_wrap = true +tracks/13/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0.0] +} +tracks/14/type = "value" +tracks/14/imported = false +tracks/14/enabled = true +tracks/14/path = NodePath("Body/ArmPivot:rotation") +tracks/14/interp = 1 +tracks/14/loop_wrap = true +tracks/14/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 0, 0)] } [sub_resource type="Animation" id="Animation_u5sy4"] @@ -228,6 +290,59 @@ tracks/7/keys = { "values": [Vector3(0, 0, -1.134464)] } +[sub_resource type="Animation" id="Animation_yptk5"] +resource_name = "hold_weapon" +length = 0.2 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Body/ArmPivot/FrontArm:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 0, 4.7996554)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Body/ArmPivot/BackArm:rotation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 0, -1.1606439)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Body/ArmPivot/FrontArm:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0.045, -0.1, 0)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Body/ArmPivot/BackArm:position") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 0, 0)] +} + [sub_resource type="Animation" id="Animation_p57ef"] resource_name = "jump" length = 0.2 @@ -429,6 +544,110 @@ tracks/7/keys = { "values": [Vector3(0, 0, -0.5235988)] } +[sub_resource type="Animation" id="Animation_54k0m"] +resource_name = "limbs_back" +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Body/ArmPivot/FrontArm:position:z") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0.01] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Body/ArmPivot/BackArm:position:z") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [-0.01] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Body/BackLeg:position:z") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [-0.012] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Body/FrontLeg:position:z") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [-0.011] +} + +[sub_resource type="Animation" id="Animation_06ej8"] +resource_name = "limbs_front" +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Body/ArmPivot/FrontArm:position:z") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [-0.01] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Body/ArmPivot/BackArm:position:z") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0.01] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Body/BackLeg:position:z") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0.012] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Body/FrontLeg:position:z") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 1, +"values": [0.011] +} + [sub_resource type="Animation" id="Animation_0tnpc"] resource_name = "move" loop_mode = 1 @@ -493,18 +712,51 @@ tracks/4/keys = { "values": [] } +[sub_resource type="Animation" id="Animation_ny5xw"] +resource_name = "swing_weapon" +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Body/ArmPivot:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.01, 0.04, 0.1), +"transitions": PackedFloat32Array(1, 1, 1, 1), +"update": 0, +"values": [Vector3(0, 0, -0.9599311), Vector3(0, 0, -0.9599311), Vector3(0, 0, 1.0471976), Vector3(0, 0, 1.012291)] +} + [sub_resource type="AnimationLibrary" id="AnimationLibrary_vtaks"] _data = { &"RESET": SubResource("Animation_gee14"), &"fall": SubResource("Animation_u5sy4"), +&"hold_weapon": SubResource("Animation_yptk5"), &"jump": SubResource("Animation_p57ef"), &"leap": SubResource("Animation_vtaks"), -&"move": SubResource("Animation_0tnpc") +&"limbs_back": SubResource("Animation_54k0m"), +&"limbs_front": SubResource("Animation_06ej8"), +&"move": SubResource("Animation_0tnpc"), +&"swing_weapon": SubResource("Animation_ny5xw") } +[sub_resource type="AnimationNodeAdd2" id="AnimationNodeAdd2_06ej8"] + [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_vtaks"] animation = &"leap" +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_54k0m"] +animation = &"limbs_front" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_yptk5"] +animation = &"limbs_back" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_06ej8"] +animation = &"hold_weapon" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_ny5xw"] +animation = &"swing_weapon" + [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_p57ef"] animation = &"jump" @@ -513,8 +765,15 @@ animation = &"jump" [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_u5sy4"] animation = &"fall" +[sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_54k0m"] +filter_enabled = true +filters = ["Body/ArmPivot/BackArm:position", "Body/ArmPivot/BackArm:rotation", "Body/ArmPivot/FrontArm:position", "Body/ArmPivot/FrontArm:rotation"] +sync = true + [sub_resource type="AnimationNodeOneShot" id="AnimationNodeOneShot_u5sy4"] +[sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_ny5xw"] + [sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_kvpfn"] [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_gee14"] @@ -523,14 +782,19 @@ animation = &"move" [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_0tnpc"] animation = &"RESET" +[sub_resource type="AnimationNodeOneShot" id="AnimationNodeOneShot_06ej8"] +filter_enabled = true +filters = ["Body/ArmPivot:rotation"] + [sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_vtaks"] [sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_p57ef"] [sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_kvpfn"] -nodes/output/position = Vector2(1140, 140) +graph_offset = Vector2(242.94073, -68.15653) +nodes/output/position = Vector2(2140, 100) nodes/jump/node = SubResource("AnimationNodeOneShot_u5sy4") -nodes/jump/position = Vector2(860, 140) +nodes/jump/position = Vector2(860, 100) nodes/reset/node = SubResource("AnimationNodeAnimation_0tnpc") nodes/reset/position = Vector2(60, 20) nodes/move/node = SubResource("AnimationNodeAnimation_gee14") @@ -549,48 +813,85 @@ nodes/fall_anim/position = Vector2(260, 400) "nodes/Animation 2/position" = Vector2(480, 420) nodes/leap/node = SubResource("AnimationNodeBlend2_kvpfn") nodes/leap/position = Vector2(670.4032, 137.15503) -node_connections = [&"output", 0, &"jump", &"jump", 0, &"leap", &"jump", 1, &"Animation", &"walk", 0, &"reset", &"walk", 1, &"walk_speed", &"walk_speed", 0, &"move", &"fall", 0, &"walk", &"fall", 1, &"fall_anim", &"leap", 0, &"fall", &"leap", 1, &"Animation 2"] +nodes/Add2/node = SubResource("AnimationNodeAdd2_06ej8") +nodes/Add2/position = Vector2(1220, 100) +nodes/layering/node = SubResource("AnimationNodeBlend2_ny5xw") +nodes/layering/position = Vector2(1060, 280) +"nodes/Animation 3/node" = SubResource("AnimationNodeAnimation_54k0m") +"nodes/Animation 3/position" = Vector2(860, 400) +"nodes/Animation 4/node" = SubResource("AnimationNodeAnimation_yptk5") +"nodes/Animation 4/position" = Vector2(860, 580) +nodes/hold_weapon/node = SubResource("AnimationNodeBlend2_54k0m") +nodes/hold_weapon/position = Vector2(1560, 80) +"nodes/Animation 5/node" = SubResource("AnimationNodeAnimation_06ej8") +"nodes/Animation 5/position" = Vector2(1380, 360) +nodes/swing_weapon/node = SubResource("AnimationNodeOneShot_06ej8") +nodes/swing_weapon/position = Vector2(1900, 60) +"nodes/Animation 6/node" = SubResource("AnimationNodeAnimation_ny5xw") +"nodes/Animation 6/position" = Vector2(1700, 340) +node_connections = [&"output", 0, &"swing_weapon", &"jump", 0, &"leap", &"jump", 1, &"Animation", &"walk", 0, &"reset", &"walk", 1, &"walk_speed", &"walk_speed", 0, &"move", &"fall", 0, &"walk", &"fall", 1, &"fall_anim", &"leap", 0, &"fall", &"leap", 1, &"Animation 2", &"Add2", 0, &"jump", &"Add2", 1, &"layering", &"layering", 0, &"Animation 3", &"layering", 1, &"Animation 4", &"hold_weapon", 0, &"Add2", &"hold_weapon", 1, &"Animation 5", &"swing_weapon", 0, &"hold_weapon", &"swing_weapon", 1, &"Animation 6"] [node name="DreamerBody" type="Node3D" unique_id=723408850] +script = ExtResource("1_54k0m") [node name="Body" type="Sprite3D" parent="." unique_id=318419732] pixel_size = 0.03 +shaded = true +alpha_cut = 2 texture_filter = 0 -render_priority = 2 texture = ExtResource("1_06ej8") [node name="FrontLeg" type="Sprite3D" parent="Body" unique_id=289058799] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.045, -0.09000015, 0) offset = Vector2(-0.5, -10) pixel_size = 0.03 +shaded = true +alpha_cut = 2 texture_filter = 0 -render_priority = 1 texture = ExtResource("2_54k0m") [node name="BackLeg" type="Sprite3D" parent="Body" unique_id=1402882774] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.044999994, -0.09000015, 0) offset = Vector2(-0.5, -10) pixel_size = 0.03 +shaded = true +alpha_cut = 2 texture_filter = 0 texture = ExtResource("2_54k0m") [node name="ArmPivot" type="Sprite3D" parent="Body" unique_id=1160612764] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1500001, 0) +shaded = true +alpha_cut = 2 [node name="FrontArm" type="Sprite3D" parent="Body/ArmPivot" unique_id=1602877548] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.089999996, 0, 0) offset = Vector2(0, -6) pixel_size = 0.03 +shaded = true +alpha_cut = 2 texture_filter = 0 -render_priority = 6 texture = ExtResource("3_yptk5") +[node name="HandPoint" type="Node3D" parent="Body/ArmPivot/FrontArm" unique_id=709125335] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -0.24, 0.001) + +[node name="Sword" type="Sprite3D" parent="Body/ArmPivot/FrontArm/HandPoint" unique_id=1523806768] +transform = Transform3D(-4.371139e-08, -1, 0, 1, -4.371139e-08, 0, 0, 0, 1, 0, 0, 0) +offset = Vector2(0, 5.5) +pixel_size = 0.03 +shaded = true +alpha_cut = 2 +texture_filter = 0 +texture = ExtResource("5_54k0m") + [node name="BackArm" type="Sprite3D" parent="Body/ArmPivot" unique_id=111008142] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.089999996, 0, 0) offset = Vector2(0, -6) pixel_size = 0.03 +shaded = true +alpha_cut = 2 texture_filter = 0 -render_priority = -1 texture = ExtResource("3_yptk5") [node name="Animations" type="AnimationPlayer" parent="." unique_id=705651586] @@ -606,3 +907,9 @@ parameters/walk/blend_amount = 0.0 parameters/walk_speed/scale = 3.140000000000001 parameters/fall/blend_amount = 0.0 parameters/leap/blend_amount = 0.0 +parameters/Add2/add_amount = 1.0 +parameters/layering/blend_amount = 0.0 +parameters/hold_weapon/blend_amount = 0.0 +parameters/swing_weapon/active = false +parameters/swing_weapon/internal_active = false +parameters/swing_weapon/request = 0 diff --git a/scenes/enemies/slime.tscn b/scenes/living/slime.tscn similarity index 99% rename from scenes/enemies/slime.tscn rename to scenes/living/slime.tscn index ba43913..fdb1983 100644 --- a/scenes/enemies/slime.tscn +++ b/scenes/living/slime.tscn @@ -1,6 +1,6 @@ [gd_scene format=3 uid="uid://co5p7h3exggvh"] -[ext_resource type="Script" uid="uid://c7gns73bldktx" path="res://scripts/slime.gd" id="1_4h4y0"] +[ext_resource type="Script" uid="uid://c7gns73bldktx" path="res://scripts/enemies/slime.gd" id="1_4h4y0"] [ext_resource type="Texture2D" uid="uid://b6krbvbco0jt6" path="res://textures/shadow.png" id="2_b58ev"] [ext_resource type="Texture2D" uid="uid://b8sc3vq5pmwil" path="res://textures/slime.png" id="3_ankfk"] diff --git a/scripts/dreamer_body.gd b/scripts/dreamer_body.gd new file mode 100644 index 0000000..bbdd0b5 --- /dev/null +++ b/scripts/dreamer_body.gd @@ -0,0 +1,10 @@ +extends Node3D + +# Called when the node enters the scene tree for the first time. +func _ready() -> void: + pass # Replace with function body. + + +# Called every frame. 'delta' is the elapsed time since the previous frame. +func _process(delta: float) -> void: + $Body/FrontLeg.position.z = 2 diff --git a/scripts/dreamer_body.gd.uid b/scripts/dreamer_body.gd.uid new file mode 100644 index 0000000..29dfbb2 --- /dev/null +++ b/scripts/dreamer_body.gd.uid @@ -0,0 +1 @@ +uid://c8sptss1aulmi diff --git a/scripts/enemies/dreamer.gd b/scripts/enemies/dreamer.gd new file mode 100644 index 0000000..e97b0fe --- /dev/null +++ b/scripts/enemies/dreamer.gd @@ -0,0 +1,163 @@ +extends CharacterBody3D + +const SPEED = 2.5 +const JUMP_VELOCITY = 3.5 + +var walk_animation_time = 0 +var face_rotation = null +var face_left = false + +var combatable = true + +var iframes = 0 +var knockback_time = 0 +var health = 100 + + +var current_weapon = "test_sword" + +enum { + STATE_IDLE, + STATE_APPROACH_ENEMY, + STATE_CHARGE_ATTACK, + STATE_ATTACK +} + +@onready var game = get_parent() +@onready var player = game.get_node("Player") + + +@onready var navigation_agent: NavigationAgent3D = $Navigator + +func hit_me(): + iframes = 0.5 + health -= 10 + +func get_my_weapon_info(value: String): + return get_weapon_info(current_weapon, value) + +func get_weapon_info(weapon: String, value: String): + if value in Global.weapons[weapon]: + return Global.weapons[weapon][value] + else: return null + +func on_hit(hitter: Node3D = null) -> void: + iframes = 0.8 + + if hitter: + knockback_time = 0.25 + velocity += hitter.global_position.direction_to(global_position) * 8 + velocity.y = 0 + +func _ready() -> void: + $DreamerBody.look_at(game.get_node("PlayerCamera").global_position) + $DreamerBody.rotation.x = 0 + face_rotation = $DreamerBody.rotation.y + +func _process(delta: float) -> void: + if iframes > 0: + iframes -= delta + $DreamerBody/Body.modulate.a = 0.5 + else: + $DreamerBody/Body.modulate.a = 1 + + if knockback_time > 0: + knockback_time -= delta + +func _physics_process(delta: float) -> void: + if not is_on_floor(): + velocity += get_gravity() * delta + + var viewport_half = (get_viewport().get_visible_rect().size / 2.0) + var player_position = Vector2.ZERO #camera.unproject_position(global_transform.origin) + + if face_left: + $DreamerBody.rotation.y = face_rotation + deg_to_rad(180) + $DreamerBody/Animator.set("parameters/layering/blend_amount", 1.0) + else: + $DreamerBody.rotation.y = face_rotation + $DreamerBody/Animator.set("parameters/layering/blend_amount", 0.0) + + var mouse_point_angle = player_position.angle_to_point(get_viewport().get_mouse_position()) + + if combatable: + #$DreamerBody/Body/ArmPivot.rotation.z = mouse_point_angle + $HitCollision.rotation.y = -mouse_point_angle + face_rotation + + if abs(rad_to_deg(mouse_point_angle) - (-90)) < 50: + $HitCollision/Shape.shape.size.x = 1.5 + else: + $HitCollision/Shape.shape.size.x = 1.2 + + if (rad_to_deg(mouse_point_angle) < -90) or (rad_to_deg(mouse_point_angle) > 90): + face_left = true + + var mouse_pos = get_viewport().get_mouse_position() + mouse_pos.y = (viewport_half.y) + ((viewport_half.y) - mouse_pos.y) + + #$DreamerBody/Body/ArmPivot.rotation.z = viewport_half.angle_to_point(mouse_pos) + else: + face_left = false + $DreamerBody/Body/ArmPivot.scale.y = 1 + $DreamerBody/Body/ArmPivot.scale.x = 1 + else: + $DreamerBody/Body/ArmPivot.global_rotation.y = face_rotation + $DreamerBody/Body/ArmPivot.scale.y = 1 + $DreamerBody/Body/ArmPivot.scale.x = 1 + $DreamerBody/Body/ArmPivot.rotation.z = 0 + + if false: + velocity.y = JUMP_VELOCITY + $DreamerBody/Animator.set("parameters/jump/request", AnimationNodeOneShot.ONE_SHOT_REQUEST_FIRE) + + navigation_agent.set_target_position(player.global_position) + + var next_path_position: Vector3 = navigation_agent.get_next_path_position() + + var direction = global_position.direction_to(next_path_position) + + if direction.x > 0: + face_left = false + if direction.x < 0: + face_left = true + + if direction and (knockback_time <= 0): + velocity.x = direction.x * SPEED + velocity.z = direction.z * SPEED + + $DreamerBody/Animator.set("parameters/walk/blend_amount", abs(direction.length())) + else: + + velocity.x = move_toward(velocity.x, 0, delta * 4) + velocity.z = move_toward(velocity.z, 0, delta * 4) + + $DreamerBody/Animator.set("parameters/walk/blend_amount", 0) + + if direction and is_on_floor(): + walk_animation_time += delta * 25 + + $DreamerBody.position.y = sin(walk_animation_time + 1) / 16 + $DreamerBody.rotation.z = sin(walk_animation_time / 2) / 16 + else: + walk_animation_time = 0 + + $DreamerBody.rotation.z /= 1 + (delta * 2.5) + + $DreamerBody.position.y /= 1 + (delta * 12) + + if is_on_floor(): + $DreamerBody/Animator.set("parameters/fall/blend_amount", 0) + $DreamerBody/Animator.set("parameters/leap/blend_amount", 0) + else: + if velocity.y < 0: + $DreamerBody/Animator.set("parameters/fall/blend_amount", 1) + $DreamerBody/Animator.set("parameters/leap/blend_amount", 0) + else: + $DreamerBody/Animator.set("parameters/fall/blend_amount", 0) + $DreamerBody/Animator.set("parameters/leap/blend_amount", 1) + + move_and_slide() + + + $Shadow.global_position.y = $Floorcast.get_collision_point().y + 0.01 + diff --git a/scripts/enemies/dreamer.gd.uid b/scripts/enemies/dreamer.gd.uid new file mode 100644 index 0000000..7c467ff --- /dev/null +++ b/scripts/enemies/dreamer.gd.uid @@ -0,0 +1 @@ +uid://vi18m3j6f6fa diff --git a/scripts/slime.gd b/scripts/enemies/slime.gd similarity index 100% rename from scripts/slime.gd rename to scripts/enemies/slime.gd diff --git a/scripts/slime.gd.uid b/scripts/enemies/slime.gd.uid similarity index 100% rename from scripts/slime.gd.uid rename to scripts/enemies/slime.gd.uid diff --git a/scripts/player.gd b/scripts/player.gd index c91ea2a..103419e 100644 --- a/scripts/player.gd +++ b/scripts/player.gd @@ -32,9 +32,7 @@ func get_my_weapon_info(value: String): return get_weapon_info(current_weapon, value) func get_weapon_info(weapon: String, value: String): - print(weapon, value) if value in Global.weapons[weapon]: - print("YAYA", Global.weapons[weapon][value]) return Global.weapons[weapon][value] else: return null @@ -72,13 +70,14 @@ func _physics_process(delta: float) -> void: if face_left: $DreamerBody.rotation.y = face_rotation + deg_to_rad(180) + $DreamerBody/Animator.set("parameters/layering/blend_amount", 1.0) else: $DreamerBody.rotation.y = face_rotation + $DreamerBody/Animator.set("parameters/layering/blend_amount", 0.0) var mouse_point_angle = player_position.angle_to_point(get_viewport().get_mouse_position()) if combatable: - #$DreamerBody/Body/ArmPivot.rotation.z = mouse_point_angle $HitCollision.rotation.y = -mouse_point_angle + face_rotation if abs(rad_to_deg(mouse_point_angle) - (-90)) < 50: @@ -97,11 +96,15 @@ func _physics_process(delta: float) -> void: face_left = false $DreamerBody/Body/ArmPivot.scale.y = 1 $DreamerBody/Body/ArmPivot.scale.x = 1 + + $DreamerBody/Animator.set("parameters/hold_weapon/blend_amount", 1.0) else: $DreamerBody/Body/ArmPivot.global_rotation.y = face_rotation $DreamerBody/Body/ArmPivot.scale.y = 1 $DreamerBody/Body/ArmPivot.scale.x = 1 $DreamerBody/Body/ArmPivot.rotation.z = 0 + + $DreamerBody/Animator.set("parameters/hold_weapon/blend_amount", 0.0) if Input.is_action_pressed("jump") and is_on_floor(): velocity.y = JUMP_VELOCITY @@ -140,6 +143,8 @@ func _physics_process(delta: float) -> void: slash.global_rotation.y = $HitCollision.global_rotation.y + deg_to_rad(180) slash.play_effect() + $DreamerBody/Animator.set("parameters/swing_weapon/request", AnimationNodeOneShot.ONE_SHOT_REQUEST_FIRE) + var hits = $HitCollision.get_overlapping_bodies() var knockback = 0 diff --git a/textures/test-sword.png.import b/textures/test-sword.png.import index 8e371f4..59555bd 100644 --- a/textures/test-sword.png.import +++ b/textures/test-sword.png.import @@ -3,19 +3,20 @@ importer="texture" type="CompressedTexture2D" uid="uid://cvtipichutylm" -path="res://.godot/imported/test-sword.png-66731188822b2310b04dd803d25c4b2d.ctex" +path.s3tc="res://.godot/imported/test-sword.png-66731188822b2310b04dd803d25c4b2d.s3tc.ctex" metadata={ -"vram_texture": false +"imported_formats": ["s3tc_bptc"], +"vram_texture": true } [deps] source_file="res://textures/test-sword.png" -dest_files=["res://.godot/imported/test-sword.png-66731188822b2310b04dd803d25c4b2d.ctex"] +dest_files=["res://.godot/imported/test-sword.png-66731188822b2310b04dd803d25c4b2d.s3tc.ctex"] [params] -compress/mode=0 +compress/mode=2 compress/high_quality=false compress/lossy_quality=0.7 compress/uastc_level=0 @@ -23,7 +24,7 @@ compress/rdo_quality_loss=0.0 compress/hdr_compression=1 compress/normal_map=0 compress/channel_pack=0 -mipmaps/generate=false +mipmaps/generate=true mipmaps/limit=-1 roughness/mode=0 roughness/src_normal="" @@ -37,4 +38,4 @@ process/normal_map_invert_y=false process/hdr_as_srgb=false process/hdr_clamp_exposure=false process/size_limit=0 -detect_3d/compress_to=1 +detect_3d/compress_to=0 diff --git a/textures/tile/stone_wall.png b/textures/tile/stone_wall.png new file mode 100644 index 0000000..a8a5220 Binary files /dev/null and b/textures/tile/stone_wall.png differ diff --git a/textures/tile/stone_wall.png.import b/textures/tile/stone_wall.png.import new file mode 100644 index 0000000..78aea97 --- /dev/null +++ b/textures/tile/stone_wall.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://cubqnw40nk224" +path.s3tc="res://.godot/imported/stone_wall.png-347bb8f8716cd17e7537aaa815c02859.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://textures/tile/stone_wall.png" +dest_files=["res://.godot/imported/stone_wall.png-347bb8f8716cd17e7537aaa815c02859.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0 diff --git a/textures/tile/stone_wall_small_rock.png b/textures/tile/stone_wall_small_rock.png new file mode 100644 index 0000000..b9d542e Binary files /dev/null and b/textures/tile/stone_wall_small_rock.png differ diff --git a/textures/tile/stone_wall_small_rock.png.import b/textures/tile/stone_wall_small_rock.png.import new file mode 100644 index 0000000..9533b69 --- /dev/null +++ b/textures/tile/stone_wall_small_rock.png.import @@ -0,0 +1,41 @@ +[remap] + +importer="texture" +type="CompressedTexture2D" +uid="uid://b1iebalulbl7d" +path.s3tc="res://.godot/imported/stone_wall_small_rock.png-0ef332000c5d7b9c91464273ffe48838.s3tc.ctex" +metadata={ +"imported_formats": ["s3tc_bptc"], +"vram_texture": true +} + +[deps] + +source_file="res://textures/tile/stone_wall_small_rock.png" +dest_files=["res://.godot/imported/stone_wall_small_rock.png-0ef332000c5d7b9c91464273ffe48838.s3tc.ctex"] + +[params] + +compress/mode=2 +compress/high_quality=false +compress/lossy_quality=0.7 +compress/uastc_level=0 +compress/rdo_quality_loss=0.0 +compress/hdr_compression=1 +compress/normal_map=0 +compress/channel_pack=0 +mipmaps/generate=true +mipmaps/limit=-1 +roughness/mode=0 +roughness/src_normal="" +process/channel_remap/red=0 +process/channel_remap/green=1 +process/channel_remap/blue=2 +process/channel_remap/alpha=3 +process/fix_alpha_border=true +process/premult_alpha=false +process/normal_map_invert_y=false +process/hdr_as_srgb=false +process/hdr_clamp_exposure=false +process/size_limit=0 +detect_3d/compress_to=0