From b926f9e4776fbd494c8939a7fbbb163b49760f3a Mon Sep 17 00:00:00 2001 From: ToasterPanic Date: Sat, 9 May 2026 11:38:52 -0400 Subject: [PATCH] ATTACKING!!!! --- project.godot | 5 + scenes/assets/dreamer_body.tscn | 663 ++++++++++++++++++++++++++++++++ scenes/game.tscn | 644 ++----------------------------- scripts/player.gd | 48 ++- scripts/test_enemy.gd | 112 ++++++ scripts/test_enemy.gd.uid | 1 + textures/slash.png | Bin 0 -> 565 bytes textures/slash.png.import | 41 ++ 8 files changed, 906 insertions(+), 608 deletions(-) create mode 100644 scenes/assets/dreamer_body.tscn create mode 100644 scripts/test_enemy.gd create mode 100644 scripts/test_enemy.gd.uid create mode 100644 textures/slash.png create mode 100644 textures/slash.png.import diff --git a/project.godot b/project.godot index 02e8fec..6cc78cc 100644 --- a/project.godot +++ b/project.godot @@ -59,6 +59,11 @@ dodge={ "events": [Object(InputEventKey,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"pressed":false,"keycode":0,"physical_keycode":69,"key_label":0,"unicode":101,"location":0,"echo":false,"script":null) ] } +attack={ +"deadzone": 0.2, +"events": [Object(InputEventMouseButton,"resource_local_to_scene":false,"resource_name":"","device":-1,"window_id":0,"alt_pressed":false,"shift_pressed":false,"ctrl_pressed":false,"meta_pressed":false,"button_mask":1,"position":Vector2(460, 10),"global_position":Vector2(469, 58),"factor":1.0,"button_index":1,"canceled":false,"pressed":true,"double_click":false,"script":null) +] +} [physics] diff --git a/scenes/assets/dreamer_body.tscn b/scenes/assets/dreamer_body.tscn new file mode 100644 index 0000000..759e2e0 --- /dev/null +++ b/scenes/assets/dreamer_body.tscn @@ -0,0 +1,663 @@ +[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="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://bkthnj23dxsc4" path="res://textures/slash.png" id="4_ny5xw"] + +[sub_resource type="AtlasTexture" id="AtlasTexture_vtaks"] +atlas = ExtResource("4_ny5xw") +region = Rect2(0, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_kvpfn"] +atlas = ExtResource("4_ny5xw") +region = Rect2(48, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_dinhu"] +atlas = ExtResource("4_ny5xw") +region = Rect2(96, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_kvuet"] +atlas = ExtResource("4_ny5xw") +region = Rect2(144, 0, 48, 48) + +[sub_resource type="AtlasTexture" id="AtlasTexture_trtic"] +atlas = ExtResource("4_ny5xw") +region = Rect2(192, 0, 48, 48) + +[sub_resource type="SpriteFrames" id="SpriteFrames_ir15t"] +animations = [{ +"frames": [{ +"duration": 1.0, +"texture": SubResource("AtlasTexture_vtaks") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_kvpfn") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_dinhu") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_kvuet") +}, { +"duration": 1.0, +"texture": SubResource("AtlasTexture_trtic") +}], +"loop": false, +"name": &"default", +"speed": 16.0 +}] + +[sub_resource type="Animation" id="Animation_gee14"] +length = 0.001 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Body/BackLeg: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, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Body/FrontLeg: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, 0)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Body/FrontLeg: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.09000015, 0)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Body/BackLeg:position") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(-0.044999994, -0.09000015, 0)] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Body:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 0, 0)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Body:rotation") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 0, 0)] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("Body/ArmPivot/FrontArm:rotation") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(), +"transitions": PackedFloat32Array(), +"update": 0, +"values": [] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("Body/ArmPivot/FrontArm:position") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(), +"transitions": PackedFloat32Array(), +"update": 0, +"values": [] +} +tracks/8/type = "value" +tracks/8/imported = false +tracks/8/enabled = true +tracks/8/path = NodePath("Body/ArmPivot/BackArm:rotation") +tracks/8/interp = 1 +tracks/8/loop_wrap = true +tracks/8/keys = { +"times": PackedFloat32Array(), +"transitions": PackedFloat32Array(), +"update": 0, +"values": [] +} +tracks/9/type = "value" +tracks/9/imported = false +tracks/9/enabled = true +tracks/9/path = NodePath("Body/ArmPivot/BackArm:position") +tracks/9/interp = 1 +tracks/9/loop_wrap = true +tracks/9/keys = { +"times": PackedFloat32Array(), +"transitions": PackedFloat32Array(), +"update": 0, +"values": [] +} + +[sub_resource type="Animation" id="Animation_u5sy4"] +resource_name = "fall" +length = 0.2 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Body/FrontLeg:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0.045, -0.09000015, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Body/FrontLeg: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, 0.10471976)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Body/BackLeg:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(-0.044999994, -0.09000015, 0)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Body/BackLeg:rotation") +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.10471976)] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Body:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 0, 0)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Body:rotation") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 0, 0)] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("Body/ArmPivot/FrontArm:rotation") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 0, 1.134464)] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("Body/ArmPivot/BackArm:rotation") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 0, -1.134464)] +} + +[sub_resource type="Animation" id="Animation_p57ef"] +resource_name = "jump" +length = 0.2 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Body/FrontLeg:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.06666667, 0.15), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector3(0.045, -0.09000015, 0), Vector3(-0.065, -0.045, 0), Vector3(0.045, -0.09000015, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Body/FrontLeg:rotation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.06666667, 0.15), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector3(0, 0, 0), Vector3(0, 0, 0.57072264), Vector3(0, 0, 0.10471976)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Body/BackLeg:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.06666667, 0.15), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector3(-0.044999994, -0.09000015, 0), Vector3(-0.095, 0, 0), Vector3(-0.044999994, -0.09000015, 0)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Body/BackLeg:rotation") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.06666667, 0.15), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector3(0, 0, 0), Vector3(0, 0, 0), Vector3(0, 0, 0.10471976)] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Body:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0, 0.06666667, 0.15), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector3(0, 0, 0), Vector3(0, -0.15, 0), Vector3(0, 0, 0)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Body:rotation") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0, 0.06666667, 0.15), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector3(0, 0, 0), Vector3(0, 0, 0.06981317), Vector3(0, 0, 0)] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("Body/ArmPivot/FrontArm:rotation") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0, 0.06666667, 0.18), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector3(0, 0, 0.08726646), Vector3(0, 0, 0.61086524), Vector3(0, 0, 0.5235988)] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("Body/ArmPivot/BackArm:rotation") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0, 0.06666667, 0.18), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector3(0, 0, -0.08726646), Vector3(0, 0, -0.61086524), Vector3(0, 0, -0.5235988)] +} + +[sub_resource type="Animation" id="Animation_vtaks"] +resource_name = "leap" +length = 0.2 +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Body/FrontLeg:position") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0.0033333339), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0.045, -0.09000015, 0)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Body/FrontLeg:rotation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0.0033333339), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 0, 0.10471976)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Body/BackLeg:position") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0.0033333339), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(-0.044999994, -0.09000015, 0)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Body/BackLeg:rotation") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0.0033333339), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 0, 0.10471976)] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Body:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(0.0033333339), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 0, 0)] +} +tracks/5/type = "value" +tracks/5/imported = false +tracks/5/enabled = true +tracks/5/path = NodePath("Body:rotation") +tracks/5/interp = 1 +tracks/5/loop_wrap = true +tracks/5/keys = { +"times": PackedFloat32Array(0.0033333339), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 0, 0)] +} +tracks/6/type = "value" +tracks/6/imported = false +tracks/6/enabled = true +tracks/6/path = NodePath("Body/ArmPivot/FrontArm:rotation") +tracks/6/interp = 1 +tracks/6/loop_wrap = true +tracks/6/keys = { +"times": PackedFloat32Array(0.033333335), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 0, 0.5235988)] +} +tracks/7/type = "value" +tracks/7/imported = false +tracks/7/enabled = true +tracks/7/path = NodePath("Body/ArmPivot/BackArm:rotation") +tracks/7/interp = 1 +tracks/7/loop_wrap = true +tracks/7/keys = { +"times": PackedFloat32Array(0.033333335), +"transitions": PackedFloat32Array(1), +"update": 0, +"values": [Vector3(0, 0, -0.5235988)] +} + +[sub_resource type="Animation" id="Animation_0tnpc"] +resource_name = "move" +loop_mode = 1 +tracks/0/type = "value" +tracks/0/imported = false +tracks/0/enabled = true +tracks/0/path = NodePath("Body/BackLeg:rotation") +tracks/0/interp = 1 +tracks/0/loop_wrap = true +tracks/0/keys = { +"times": PackedFloat32Array(0, 0.5, 1), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector3(0, 0, -0.34906584), Vector3(0, 0, 0.34906584), Vector3(0, 0, -0.34906584)] +} +tracks/1/type = "value" +tracks/1/imported = false +tracks/1/enabled = true +tracks/1/path = NodePath("Body/FrontLeg:rotation") +tracks/1/interp = 1 +tracks/1/loop_wrap = true +tracks/1/keys = { +"times": PackedFloat32Array(0, 0.5, 1), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector3(0, 0, 0.34906584), Vector3(0, 0, -0.34906584), Vector3(0, 0, 0.34906584)] +} +tracks/2/type = "value" +tracks/2/imported = false +tracks/2/enabled = true +tracks/2/path = NodePath("Body/ArmPivot/FrontArm:rotation") +tracks/2/interp = 1 +tracks/2/loop_wrap = true +tracks/2/keys = { +"times": PackedFloat32Array(0, 0.5, 1), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector3(0, 0, -0.17453292), Vector3(0, 0, 0.17453292), Vector3(0, 0, -0.17453292)] +} +tracks/3/type = "value" +tracks/3/imported = false +tracks/3/enabled = true +tracks/3/path = NodePath("Body/ArmPivot/BackArm:rotation") +tracks/3/interp = 1 +tracks/3/loop_wrap = true +tracks/3/keys = { +"times": PackedFloat32Array(0, 0.5, 1), +"transitions": PackedFloat32Array(1, 1, 1), +"update": 0, +"values": [Vector3(0, 0, 0.17453292), Vector3(0, 0, -0.17453292), Vector3(0, 0, 0.17453292)] +} +tracks/4/type = "value" +tracks/4/imported = false +tracks/4/enabled = true +tracks/4/path = NodePath("Body:position") +tracks/4/interp = 1 +tracks/4/loop_wrap = true +tracks/4/keys = { +"times": PackedFloat32Array(), +"transitions": PackedFloat32Array(), +"update": 0, +"values": [] +} + +[sub_resource type="AnimationLibrary" id="AnimationLibrary_vtaks"] +_data = { +&"RESET": SubResource("Animation_gee14"), +&"fall": SubResource("Animation_u5sy4"), +&"jump": SubResource("Animation_p57ef"), +&"leap": SubResource("Animation_vtaks"), +&"move": SubResource("Animation_0tnpc") +} + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_vtaks"] +animation = &"leap" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_p57ef"] +animation = &"jump" + +[sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_gee14"] + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_u5sy4"] +animation = &"fall" + +[sub_resource type="AnimationNodeOneShot" id="AnimationNodeOneShot_u5sy4"] + +[sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_kvpfn"] + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_gee14"] +animation = &"move" + +[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_0tnpc"] +animation = &"RESET" + +[sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_vtaks"] + +[sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_p57ef"] + +[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_kvpfn"] +graph_offset = Vector2(-228.28757, 27.085762) +nodes/output/position = Vector2(1140, 140) +nodes/jump/node = SubResource("AnimationNodeOneShot_u5sy4") +nodes/jump/position = Vector2(860, 140) +nodes/reset/node = SubResource("AnimationNodeAnimation_0tnpc") +nodes/reset/position = Vector2(60, 20) +nodes/move/node = SubResource("AnimationNodeAnimation_gee14") +nodes/move/position = Vector2(-80, 220) +nodes/walk/node = SubResource("AnimationNodeBlend2_vtaks") +nodes/walk/position = Vector2(240, 80) +nodes/Animation/node = SubResource("AnimationNodeAnimation_p57ef") +nodes/Animation/position = Vector2(680, 420) +nodes/walk_speed/node = SubResource("AnimationNodeTimeScale_p57ef") +nodes/walk_speed/position = Vector2(80, 220) +nodes/fall/node = SubResource("AnimationNodeBlend2_gee14") +nodes/fall/position = Vector2(480, 100) +nodes/fall_anim/node = SubResource("AnimationNodeAnimation_u5sy4") +nodes/fall_anim/position = Vector2(260, 400) +"nodes/Animation 2/node" = SubResource("AnimationNodeAnimation_vtaks") +"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"] + +[node name="DreamerBody" type="Node3D" unique_id=723408850] + +[node name="Body" type="Sprite3D" parent="." unique_id=318419732] +pixel_size = 0.03 +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 +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 +texture_filter = 0 +texture = ExtResource("2_54k0m") + +[node name="ArmPivot" type="Node3D" parent="Body" unique_id=935537735] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1500001, 0) + +[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 +texture_filter = 0 +render_priority = 6 +texture = ExtResource("3_yptk5") + +[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 +texture_filter = 0 +render_priority = -1 +texture = ExtResource("3_yptk5") + +[node name="Slash" type="AnimatedSprite3D" parent="Body/ArmPivot" unique_id=387297010] +transform = Transform3D(-1, 0, -8.742278e-08, 0, 1, 0, 8.742278e-08, 0, -1, 0, -0.1500001, 0) +pixel_size = 0.04 +no_depth_test = true +texture_filter = 0 +render_priority = 99 +sprite_frames = SubResource("SpriteFrames_ir15t") +frame = 4 +frame_progress = 1.0 + +[node name="Animations" type="AnimationPlayer" parent="." unique_id=705651586] +libraries/ = SubResource("AnimationLibrary_vtaks") + +[node name="Animator" type="AnimationTree" parent="." unique_id=790879242] +tree_root = SubResource("AnimationNodeBlendTree_kvpfn") +anim_player = NodePath("../Animations") +parameters/jump/active = false +parameters/jump/internal_active = false +parameters/jump/request = 0 +parameters/walk/blend_amount = 0.0 +parameters/walk_speed/scale = 3.140000000000001 +parameters/fall/blend_amount = 0.0 +parameters/leap/blend_amount = 0.0 diff --git a/scenes/game.tscn b/scenes/game.tscn index 2d6b232..f59db0e 100644 --- a/scenes/game.tscn +++ b/scenes/game.tscn @@ -3,11 +3,10 @@ [ext_resource type="Script" uid="uid://dhfun46prq3uk" path="res://scripts/game.gd" id="1_gee14"] [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="Texture2D" uid="uid://dp3jbqmr5toth" path="res://textures/character-body.png" id="3_p57ef"] [ext_resource type="Texture2D" uid="uid://b6krbvbco0jt6" path="res://textures/shadow.png" id="4_lbhrr"] -[ext_resource type="Texture2D" uid="uid://3ptkafoafq14" path="res://textures/character-leg.png" id="4_u5sy4"] +[ext_resource type="PackedScene" uid="uid://cnii80nh1mxr2" path="res://scenes/assets/dreamer_body.tscn" id="4_p57ef"] [ext_resource type="PackedScene" uid="uid://b0kty7juk7rfo" path="res://models/stalagmite.gltf" id="5_iywne"] -[ext_resource type="Texture2D" uid="uid://rgxhw23471ut" path="res://textures/character-arm.png" id="5_u5sy4"] +[ext_resource type="Script" uid="uid://ddhrcj4ljm446" path="res://scripts/test_enemy.gd" id="6_u5sy4"] [sub_resource type="StandardMaterial3D" id="StandardMaterial3D_lbhrr"] albedo_color = Color(0.61, 0.28791997, 0.17079999, 1) @@ -16,553 +15,8 @@ albedo_color = Color(0.61, 0.28791997, 0.17079999, 1) [sub_resource type="CameraAttributesPractical" id="CameraAttributesPractical_yqjtg"] -[sub_resource type="Animation" id="Animation_gee14"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Body/BackLeg: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, 0)] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("Body/FrontLeg: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, 0)] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("Body/FrontLeg: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.09000015, 0)] -} -tracks/3/type = "value" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath("Body/BackLeg:position") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector3(-0.044999994, -0.09000015, 0)] -} -tracks/4/type = "value" -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/path = NodePath("Body:position") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector3(0, 0, 0)] -} -tracks/5/type = "value" -tracks/5/imported = false -tracks/5/enabled = true -tracks/5/path = NodePath("Body:rotation") -tracks/5/interp = 1 -tracks/5/loop_wrap = true -tracks/5/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector3(0, 0, 0)] -} -tracks/6/type = "value" -tracks/6/imported = false -tracks/6/enabled = true -tracks/6/path = NodePath("Body/ArmPivot/FrontArm:rotation") -tracks/6/interp = 1 -tracks/6/loop_wrap = true -tracks/6/keys = { -"times": PackedFloat32Array(), -"transitions": PackedFloat32Array(), -"update": 0, -"values": [] -} -tracks/7/type = "value" -tracks/7/imported = false -tracks/7/enabled = true -tracks/7/path = NodePath("Body/ArmPivot/FrontArm:position") -tracks/7/interp = 1 -tracks/7/loop_wrap = true -tracks/7/keys = { -"times": PackedFloat32Array(), -"transitions": PackedFloat32Array(), -"update": 0, -"values": [] -} -tracks/8/type = "value" -tracks/8/imported = false -tracks/8/enabled = true -tracks/8/path = NodePath("Body/ArmPivot/BackArm:rotation") -tracks/8/interp = 1 -tracks/8/loop_wrap = true -tracks/8/keys = { -"times": PackedFloat32Array(), -"transitions": PackedFloat32Array(), -"update": 0, -"values": [] -} -tracks/9/type = "value" -tracks/9/imported = false -tracks/9/enabled = true -tracks/9/path = NodePath("Body/ArmPivot/BackArm:position") -tracks/9/interp = 1 -tracks/9/loop_wrap = true -tracks/9/keys = { -"times": PackedFloat32Array(), -"transitions": PackedFloat32Array(), -"update": 0, -"values": [] -} - -[sub_resource type="Animation" id="Animation_u5sy4"] -resource_name = "fall" -length = 0.2 -loop_mode = 1 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Body/FrontLeg:position") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector3(0.045, -0.09000015, 0)] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("Body/FrontLeg: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, 0.10471976)] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("Body/BackLeg:position") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector3(-0.044999994, -0.09000015, 0)] -} -tracks/3/type = "value" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath("Body/BackLeg:rotation") -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.10471976)] -} -tracks/4/type = "value" -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/path = NodePath("Body:position") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector3(0, 0, 0)] -} -tracks/5/type = "value" -tracks/5/imported = false -tracks/5/enabled = true -tracks/5/path = NodePath("Body:rotation") -tracks/5/interp = 1 -tracks/5/loop_wrap = true -tracks/5/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector3(0, 0, 0)] -} -tracks/6/type = "value" -tracks/6/imported = false -tracks/6/enabled = true -tracks/6/path = NodePath("Body/ArmPivot/FrontArm:rotation") -tracks/6/interp = 1 -tracks/6/loop_wrap = true -tracks/6/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector3(0, 0, 1.134464)] -} -tracks/7/type = "value" -tracks/7/imported = false -tracks/7/enabled = true -tracks/7/path = NodePath("Body/ArmPivot/BackArm:rotation") -tracks/7/interp = 1 -tracks/7/loop_wrap = true -tracks/7/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector3(0, 0, -1.134464)] -} - -[sub_resource type="Animation" id="Animation_p57ef"] -resource_name = "jump" -length = 0.2 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Body/FrontLeg:position") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 0.06666667, 0.15), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [Vector3(0.045, -0.09000015, 0), Vector3(-0.065, -0.045, 0), Vector3(0.045, -0.09000015, 0)] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("Body/FrontLeg:rotation") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0, 0.06666667, 0.15), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [Vector3(0, 0, 0), Vector3(0, 0, 0.57072264), Vector3(0, 0, 0.10471976)] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("Body/BackLeg:position") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0, 0.06666667, 0.15), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [Vector3(-0.044999994, -0.09000015, 0), Vector3(-0.095, 0, 0), Vector3(-0.044999994, -0.09000015, 0)] -} -tracks/3/type = "value" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath("Body/BackLeg:rotation") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/keys = { -"times": PackedFloat32Array(0, 0.06666667, 0.15), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [Vector3(0, 0, 0), Vector3(0, 0, 0), Vector3(0, 0, 0.10471976)] -} -tracks/4/type = "value" -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/path = NodePath("Body:position") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/keys = { -"times": PackedFloat32Array(0, 0.06666667, 0.15), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [Vector3(0, 0, 0), Vector3(0, -0.15, 0), Vector3(0, 0, 0)] -} -tracks/5/type = "value" -tracks/5/imported = false -tracks/5/enabled = true -tracks/5/path = NodePath("Body:rotation") -tracks/5/interp = 1 -tracks/5/loop_wrap = true -tracks/5/keys = { -"times": PackedFloat32Array(0, 0.06666667, 0.15), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [Vector3(0, 0, 0), Vector3(0, 0, 0.06981317), Vector3(0, 0, 0)] -} -tracks/6/type = "value" -tracks/6/imported = false -tracks/6/enabled = true -tracks/6/path = NodePath("Body/ArmPivot/FrontArm:rotation") -tracks/6/interp = 1 -tracks/6/loop_wrap = true -tracks/6/keys = { -"times": PackedFloat32Array(0, 0.06666667, 0.18), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [Vector3(0, 0, 0.08726646), Vector3(0, 0, 0.61086524), Vector3(0, 0, 0.5235988)] -} -tracks/7/type = "value" -tracks/7/imported = false -tracks/7/enabled = true -tracks/7/path = NodePath("Body/ArmPivot/BackArm:rotation") -tracks/7/interp = 1 -tracks/7/loop_wrap = true -tracks/7/keys = { -"times": PackedFloat32Array(0, 0.06666667, 0.18), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [Vector3(0, 0, -0.08726646), Vector3(0, 0, -0.61086524), Vector3(0, 0, -0.5235988)] -} - -[sub_resource type="Animation" id="Animation_vtaks"] -resource_name = "leap" -length = 0.2 -loop_mode = 1 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Body/FrontLeg:position") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0.0033333339), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector3(0.045, -0.09000015, 0)] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("Body/FrontLeg:rotation") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0.0033333339), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector3(0, 0, 0.10471976)] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("Body/BackLeg:position") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0.0033333339), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector3(-0.044999994, -0.09000015, 0)] -} -tracks/3/type = "value" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath("Body/BackLeg:rotation") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/keys = { -"times": PackedFloat32Array(0.0033333339), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector3(0, 0, 0.10471976)] -} -tracks/4/type = "value" -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/path = NodePath("Body:position") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/keys = { -"times": PackedFloat32Array(0.0033333339), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector3(0, 0, 0)] -} -tracks/5/type = "value" -tracks/5/imported = false -tracks/5/enabled = true -tracks/5/path = NodePath("Body:rotation") -tracks/5/interp = 1 -tracks/5/loop_wrap = true -tracks/5/keys = { -"times": PackedFloat32Array(0.0033333339), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector3(0, 0, 0)] -} -tracks/6/type = "value" -tracks/6/imported = false -tracks/6/enabled = true -tracks/6/path = NodePath("Body/ArmPivot/FrontArm:rotation") -tracks/6/interp = 1 -tracks/6/loop_wrap = true -tracks/6/keys = { -"times": PackedFloat32Array(0.033333335), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector3(0, 0, 0.5235988)] -} -tracks/7/type = "value" -tracks/7/imported = false -tracks/7/enabled = true -tracks/7/path = NodePath("Body/ArmPivot/BackArm:rotation") -tracks/7/interp = 1 -tracks/7/loop_wrap = true -tracks/7/keys = { -"times": PackedFloat32Array(0.033333335), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector3(0, 0, -0.5235988)] -} - -[sub_resource type="Animation" id="Animation_0tnpc"] -resource_name = "move" -loop_mode = 1 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Body/BackLeg:rotation") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 0.5, 1), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [Vector3(0, 0, -0.34906584), Vector3(0, 0, 0.34906584), Vector3(0, 0, -0.34906584)] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("Body/FrontLeg:rotation") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0, 0.5, 1), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [Vector3(0, 0, 0.34906584), Vector3(0, 0, -0.34906584), Vector3(0, 0, 0.34906584)] -} -tracks/2/type = "value" -tracks/2/imported = false -tracks/2/enabled = true -tracks/2/path = NodePath("Body/ArmPivot/FrontArm:rotation") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0, 0.5, 1), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [Vector3(0, 0, -0.17453292), Vector3(0, 0, 0.17453292), Vector3(0, 0, -0.17453292)] -} -tracks/3/type = "value" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath("Body/ArmPivot/BackArm:rotation") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/keys = { -"times": PackedFloat32Array(0, 0.5, 1), -"transitions": PackedFloat32Array(1, 1, 1), -"update": 0, -"values": [Vector3(0, 0, 0.17453292), Vector3(0, 0, -0.17453292), Vector3(0, 0, 0.17453292)] -} -tracks/4/type = "value" -tracks/4/imported = false -tracks/4/enabled = true -tracks/4/path = NodePath("Body:position") -tracks/4/interp = 1 -tracks/4/loop_wrap = true -tracks/4/keys = { -"times": PackedFloat32Array(), -"transitions": PackedFloat32Array(), -"update": 0, -"values": [] -} - -[sub_resource type="AnimationLibrary" id="AnimationLibrary_vtaks"] -_data = { -&"RESET": SubResource("Animation_gee14"), -&"fall": SubResource("Animation_u5sy4"), -&"jump": SubResource("Animation_p57ef"), -&"leap": SubResource("Animation_vtaks"), -&"move": SubResource("Animation_0tnpc") -} - -[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_vtaks"] -animation = &"leap" - -[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_p57ef"] -animation = &"jump" - -[sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_gee14"] - -[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_u5sy4"] -animation = &"fall" - -[sub_resource type="AnimationNodeOneShot" id="AnimationNodeOneShot_u5sy4"] - -[sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_kvpfn"] - -[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_gee14"] -animation = &"move" - -[sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_0tnpc"] -animation = &"RESET" - -[sub_resource type="AnimationNodeBlend2" id="AnimationNodeBlend2_vtaks"] - -[sub_resource type="AnimationNodeTimeScale" id="AnimationNodeTimeScale_p57ef"] - -[sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_kvpfn"] -graph_offset = Vector2(-228.28757, 27.085762) -nodes/output/position = Vector2(1140, 140) -nodes/jump/node = SubResource("AnimationNodeOneShot_u5sy4") -nodes/jump/position = Vector2(860, 140) -nodes/reset/node = SubResource("AnimationNodeAnimation_0tnpc") -nodes/reset/position = Vector2(60, 20) -nodes/move/node = SubResource("AnimationNodeAnimation_gee14") -nodes/move/position = Vector2(-80, 220) -nodes/walk/node = SubResource("AnimationNodeBlend2_vtaks") -nodes/walk/position = Vector2(240, 80) -nodes/Animation/node = SubResource("AnimationNodeAnimation_p57ef") -nodes/Animation/position = Vector2(680, 420) -nodes/walk_speed/node = SubResource("AnimationNodeTimeScale_p57ef") -nodes/walk_speed/position = Vector2(80, 220) -nodes/fall/node = SubResource("AnimationNodeBlend2_gee14") -nodes/fall/position = Vector2(480, 100) -nodes/fall_anim/node = SubResource("AnimationNodeAnimation_u5sy4") -nodes/fall_anim/position = Vector2(260, 400) -"nodes/Animation 2/node" = SubResource("AnimationNodeAnimation_vtaks") -"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"] +[sub_resource type="BoxShape3D" id="BoxShape3D_0tnpc"] +size = Vector3(1, 1, 1.3) [sub_resource type="CapsuleShape3D" id="CapsuleShape3D_yqjtg"] radius = 0.25 @@ -587,61 +41,14 @@ script = ExtResource("1_lnu2h") transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 3, 0) script = ExtResource("1_yqjtg") -[node name="DreamerBody" type="Node3D" parent="Player" unique_id=827683712] - -[node name="Body" type="Sprite3D" parent="Player/DreamerBody" unique_id=2055611556] -pixel_size = 0.03 -texture_filter = 0 -render_priority = 2 -texture = ExtResource("3_p57ef") - -[node name="FrontLeg" type="Sprite3D" parent="Player/DreamerBody/Body" unique_id=1282701626] -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 -texture_filter = 0 -render_priority = 1 -texture = ExtResource("4_u5sy4") - -[node name="BackLeg" type="Sprite3D" parent="Player/DreamerBody/Body" unique_id=1621844440] -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 -texture_filter = 0 -texture = ExtResource("4_u5sy4") - -[node name="ArmPivot" type="Node3D" parent="Player/DreamerBody/Body" unique_id=101320487] +[node name="HitCollision" type="Area3D" parent="Player" unique_id=1708789602] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1500001, 0) -[node name="FrontArm" type="Sprite3D" parent="Player/DreamerBody/Body/ArmPivot" unique_id=1454211664] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.089999996, 0, 0) -offset = Vector2(0, -6) -pixel_size = 0.03 -texture_filter = 0 -render_priority = 6 -texture = ExtResource("5_u5sy4") +[node name="CollisionShape3D" type="CollisionShape3D" parent="Player/HitCollision" unique_id=653786925] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 0, 0) +shape = SubResource("BoxShape3D_0tnpc") -[node name="BackArm" type="Sprite3D" parent="Player/DreamerBody/Body/ArmPivot" unique_id=1463191879] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.089999996, 0, 0) -offset = Vector2(0, -6) -pixel_size = 0.03 -texture_filter = 0 -render_priority = -1 -texture = ExtResource("5_u5sy4") - -[node name="Animations" type="AnimationPlayer" parent="Player/DreamerBody" unique_id=708762765] -libraries/ = SubResource("AnimationLibrary_vtaks") - -[node name="Animator" type="AnimationTree" parent="Player/DreamerBody" unique_id=794846221] -tree_root = SubResource("AnimationNodeBlendTree_kvpfn") -anim_player = NodePath("../Animations") -parameters/jump/active = false -parameters/jump/internal_active = false -parameters/jump/request = 0 -parameters/walk/blend_amount = 0.0 -parameters/walk_speed/scale = 3.1400000000000006 -parameters/fall/blend_amount = 0.0 -parameters/leap/blend_amount = 0.0 +[node name="DreamerBody" parent="Player" unique_id=723408850 instance=ExtResource("4_p57ef")] [node name="Shadow" type="Sprite3D" parent="Player" unique_id=495232250] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, -2, 0) @@ -657,6 +64,39 @@ shape = SubResource("CapsuleShape3D_yqjtg") [node name="Floorcast" type="RayCast3D" parent="Player" unique_id=991770843] target_position = Vector3(0, -16, 0) +[node name="EnemyTest" type="CharacterBody3D" parent="." unique_id=109591127] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -3, 3, 0) +script = ExtResource("6_u5sy4") + +[node name="HitCollision" type="Area3D" parent="EnemyTest" unique_id=736307848] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.1500001, 0) + +[node name="CollisionShape3D" type="CollisionShape3D" parent="EnemyTest/HitCollision" unique_id=1336116220] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -0.5, 0, 0) +shape = SubResource("BoxShape3D_0tnpc") + +[node name="DreamerBody" parent="EnemyTest" unique_id=780505789 instance=ExtResource("4_p57ef")] + +[node name="Shadow" type="Sprite3D" parent="EnemyTest" unique_id=521501658] +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="EnemyTest" unique_id=1794588893] +shape = SubResource("CapsuleShape3D_yqjtg") + +[node name="Floorcast" type="RayCast3D" parent="EnemyTest" unique_id=1411083951] +target_position = Vector3(0, -16, 0) + +[node name="HealthLabel" type="Label3D" parent="EnemyTest" unique_id=1869384013] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.8399999, 0) +pixel_size = 0.01 +billboard = 1 +text = "hello!" + [node name="Sun" type="DirectionalLight3D" parent="." unique_id=1000747668] transform = Transform3D(5.337265e-08, 0.90171933, -0.4323222, -0.3453802, 0.40571806, 0.8462301, 0.93846303, 0.14931537, 0.31143594, 0, 0, 0) shadow_enabled = true diff --git a/scripts/player.gd b/scripts/player.gd index 33e9b39..d7fd169 100644 --- a/scripts/player.gd +++ b/scripts/player.gd @@ -7,6 +7,8 @@ var walk_animation_time = 0 var face_rotation = null var face_left = false +var combatable = true + @onready var game = get_parent() @onready var camera = game.get_node("PlayerCamera") @@ -19,24 +21,58 @@ func _physics_process(delta: float) -> void: if not is_on_floor(): velocity += get_gravity() * delta - var viewport_size = (get_viewport().get_visible_rect().size / 2.0) + var viewport_half = (get_viewport().get_visible_rect().size / 2.0) + var player_position = camera.unproject_position(global_transform.origin) + + print(viewport_half) + print(player_position) if face_left: $DreamerBody.rotation.y = face_rotation + deg_to_rad(180) else: $DreamerBody.rotation.y = face_rotation + + + if combatable: + $DreamerBody/Body/ArmPivot.rotation.z = player_position.angle_to_point(get_viewport().get_mouse_position()) + $HitCollision.rotation.y = -$DreamerBody/Body/ArmPivot.rotation.z + face_rotation - #$DreamerBody/Body/ArmPivot.rotation.z = viewport_size.angle_to_point(get_viewport().get_mouse_position()) + if ($DreamerBody/Body/ArmPivot.rotation_degrees.z < -90) or ($DreamerBody/Body/ArmPivot.rotation_degrees.z > 90): + face_left = true + $DreamerBody/Body/ArmPivot.scale.y = -1 + $DreamerBody/Body/ArmPivot.scale.x = -1 + 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 Input.is_action_pressed("jump") and is_on_floor(): velocity.y = JUMP_VELOCITY $DreamerBody/Animator.set("parameters/jump/request", AnimationNodeOneShot.ONE_SHOT_REQUEST_FIRE) var input_dir := Input.get_vector("move_left", "move_right", "move_up", "move_down") - if input_dir.x > 0: - face_left = false - if input_dir.x < 0: - face_left = true + if not combatable: + if input_dir.x > 0: + face_left = false + if input_dir.x < 0: + face_left = true + + if Input.is_action_just_pressed("attack"): + $DreamerBody/Body/ArmPivot/Slash.play("default") + var hits = $HitCollision.get_overlapping_bodies() + + for body in hits: + if "health" in body: + body.health -= 10 var direction = (camera.transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized() if direction: diff --git a/scripts/test_enemy.gd b/scripts/test_enemy.gd new file mode 100644 index 0000000..54365b6 --- /dev/null +++ b/scripts/test_enemy.gd @@ -0,0 +1,112 @@ +extends CharacterBody3D + +const SPEED = 2.5 +const JUMP_VELOCITY = 4.5 + +var walk_animation_time = 0 +var face_rotation = null +var face_left = false + +var combatable = false +var health = 100 + +@onready var game = get_parent() +@onready var camera = game.get_node("PlayerCamera") + +func _ready() -> void: + $DreamerBody.look_at(game.get_node("PlayerCamera").global_position) + $DreamerBody.rotation.x = 0 + face_rotation = $DreamerBody.rotation.y + +func _physics_process(delta: float) -> void: + $HealthLabel.text = str(health) + + if not is_on_floor(): + velocity += get_gravity() * delta + + var viewport_half = (get_viewport().get_visible_rect().size / 2.0) + var player_position = camera.unproject_position(global_transform.origin) + + print(viewport_half) + print(player_position) + + if face_left: + $DreamerBody.rotation.y = face_rotation + deg_to_rad(180) + else: + $DreamerBody.rotation.y = face_rotation + + + if combatable: + $DreamerBody/Body/ArmPivot.rotation.z = player_position.angle_to_point(get_viewport().get_mouse_position()) + $HitCollision.rotation.y = -$DreamerBody/Body/ArmPivot.rotation.z + face_rotation + + if ($DreamerBody/Body/ArmPivot.rotation_degrees.z < -90) or ($DreamerBody/Body/ArmPivot.rotation_degrees.z > 90): + face_left = true + $DreamerBody/Body/ArmPivot.scale.y = -1 + $DreamerBody/Body/ArmPivot.scale.x = -1 + 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 Input.is_action_pressed("jump") and is_on_floor(): + velocity.y = JUMP_VELOCITY + $DreamerBody/Animator.set("parameters/jump/request", AnimationNodeOneShot.ONE_SHOT_REQUEST_FIRE) + + var input_dir := Vector2.ZERO + if not combatable: + if input_dir.x > 0: + face_left = false + if input_dir.x < 0: + face_left = true + + var direction = (camera.transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized() + if direction: + 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, SPEED) + velocity.z = move_toward(velocity.z, 0, SPEED) + + $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/test_enemy.gd.uid b/scripts/test_enemy.gd.uid new file mode 100644 index 0000000..d9723a5 --- /dev/null +++ b/scripts/test_enemy.gd.uid @@ -0,0 +1 @@ +uid://ddhrcj4ljm446 diff --git a/textures/slash.png b/textures/slash.png new file mode 100644 index 0000000000000000000000000000000000000000..b660b8201ff56f3ea6248b031f2683886d277e68 GIT binary patch literal 565 zcmV-50?Pe~P)Px$?@2^KRCt{2-O-MNAP`1j*!2BhnZ1!l30j&8GyizL%grX8W<7$o-KGQp0M^T^ zAFz~C4g=)8dDXZ66}M9E!hpwGq1#x*ezKn=Mx600!KWwwPrbG6#4 zN31?S{BafV{ zU{$!?QtitQ{K2XA?fe&&4Cn5&kBm;&mR$o5|7(@76wokGF zt8b&3A9s)q7ytoJ6=Ay>;W?A!01xG zdDZ@ZaqD?zBH)G8S1s*C?a#qy74plka6kz^eumayqE#4lb`JWtbVg