From 81bcd95d42ccf7dfbd14238108e55add0fa04ba8 Mon Sep 17 00:00:00 2001 From: anyreso Date: Wed, 24 Apr 2024 07:08:24 +0000 Subject: [PATCH] =?UTF-8?q?=F0=9F=8D=BB=20Shoot=20straight=20and=20clean?= =?UTF-8?q?=20up=20mode=20management?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- entities/player/assets/vanguard.tscn | 98 +++++++------- entities/player/player.gd | 10 +- entities/player/player.tscn | 117 +--------------- .../weapons/space_gun/assets/disclauncher.glb | Bin 167880 -> 147740 bytes entities/weapons/space_gun/space_gun.gd | 11 +- entities/weapons/space_gun/space_gun.tscn | 24 +++- environments/desert.tres | 1 - interfaces/menus/boot/boot.tscn | 2 +- main.tscn | 76 ++++++----- modes/demo.tscn | 2 +- modes/multiplayer.gd | 128 ++++++++++++++++++ modes/multiplayer.tscn | 120 +--------------- 12 files changed, 262 insertions(+), 327 deletions(-) create mode 100644 modes/multiplayer.gd diff --git a/entities/player/assets/vanguard.tscn b/entities/player/assets/vanguard.tscn index 3050893..6d571ac 100644 --- a/entities/player/assets/vanguard.tscn +++ b/entities/player/assets/vanguard.tscn @@ -2,9 +2,9 @@ [ext_resource type="PackedScene" uid="uid://4naw661fqmjg" path="res://entities/player/assets/vanguard.glb" id="1_d2ik6"] [ext_resource type="Script" path="res://entities/player/assets/vanguard.gd" id="2_c22xr"] -[ext_resource type="PackedScene" uid="uid://c8co0qa2omjmh" path="res://entities/weapons/space_gun/space_gun.tscn" id="3_c7kd6"] +[ext_resource type="PackedScene" uid="uid://bjcn37ops3bro" path="res://entities/weapons/space_gun/assets/disclauncher.glb" id="3_s13xh"] -[sub_resource type="Animation" id="Animation_a6skd"] +[sub_resource type="Animation" id="Animation_bdd76"] resource_name = "t_pose" length = 0.0333333 tracks/0/type = "position_3d" @@ -379,7 +379,7 @@ tracks/52/interp = 1 tracks/52/loop_wrap = true tracks/52/keys = PackedFloat32Array(0, 1, 0.354872, -0.0338185, -0.004324, 0.934293) -[sub_resource type="Animation" id="Animation_ggabv"] +[sub_resource type="Animation" id="Animation_8iaxi"] resource_name = "run_left" length = 0.5 loop_mode = 1 @@ -755,7 +755,7 @@ tracks/52/interp = 1 tracks/52/loop_wrap = true tracks/52/keys = PackedFloat32Array(0, 1, 0.624011, -9.44547e-08, 0.04919, 0.779865) -[sub_resource type="Animation" id="Animation_nbrwa"] +[sub_resource type="Animation" id="Animation_pvd7g"] resource_name = "jump_up" length = 0.533333 tracks/0/type = "position_3d" @@ -1130,7 +1130,7 @@ tracks/52/interp = 1 tracks/52/loop_wrap = true tracks/52/keys = PackedFloat32Array(0, 1, 0.624011, -9.44547e-08, 0.04919, 0.779865) -[sub_resource type="Animation" id="Animation_001mg"] +[sub_resource type="Animation" id="Animation_s40u7"] resource_name = "idle" length = 2.1 loop_mode = 1 @@ -1506,7 +1506,7 @@ tracks/52/interp = 1 tracks/52/loop_wrap = true tracks/52/keys = PackedFloat32Array(0, 1, 0.624011, -9.44547e-08, 0.04919, 0.779865) -[sub_resource type="Animation" id="Animation_8nhf0"] +[sub_resource type="Animation" id="Animation_pddls"] resource_name = "run_backward" length = 0.5 loop_mode = 1 @@ -1882,7 +1882,7 @@ tracks/52/interp = 1 tracks/52/loop_wrap = true tracks/52/keys = PackedFloat32Array(0, 1, 0.624011, -9.44547e-08, 0.04919, 0.779865) -[sub_resource type="Animation" id="Animation_tq1m2"] +[sub_resource type="Animation" id="Animation_3ql0w"] resource_name = "run_forward" length = 0.5 loop_mode = 1 @@ -2258,7 +2258,7 @@ tracks/52/interp = 1 tracks/52/loop_wrap = true tracks/52/keys = PackedFloat32Array(0, 1, 0.624011, -9.44547e-08, 0.04919, 0.779865) -[sub_resource type="Animation" id="Animation_p6pta"] +[sub_resource type="Animation" id="Animation_jep8n"] resource_name = "run_right" length = 0.5 loop_mode = 1 @@ -2634,7 +2634,7 @@ tracks/52/interp = 1 tracks/52/loop_wrap = true tracks/52/keys = PackedFloat32Array(0, 1, 0.624011, -9.44547e-08, 0.04919, 0.779865) -[sub_resource type="Animation" id="Animation_kpnct"] +[sub_resource type="Animation" id="Animation_6ahn1"] resource_name = "death" length = 2.83333 tracks/0/type = "position_3d" @@ -3009,7 +3009,7 @@ tracks/52/interp = 1 tracks/52/loop_wrap = true tracks/52/keys = PackedFloat32Array(0, 1, 0.624011, -9.44547e-08, 0.04919, 0.779865) -[sub_resource type="Animation" id="Animation_k5qbp"] +[sub_resource type="Animation" id="Animation_pkley"] resource_name = "jump_loop" loop_mode = 1 tracks/0/type = "position_3d" @@ -3384,17 +3384,17 @@ tracks/52/interp = 1 tracks/52/loop_wrap = true tracks/52/keys = PackedFloat32Array(0, 1, 0.624011, -9.44547e-08, 0.04919, 0.779865) -[sub_resource type="AnimationLibrary" id="AnimationLibrary_hxhxq"] +[sub_resource type="AnimationLibrary" id="AnimationLibrary_rvkv6"] _data = { -"death": SubResource("Animation_kpnct"), -"idle": SubResource("Animation_001mg"), -"jump": SubResource("Animation_k5qbp"), -"jump_up": SubResource("Animation_nbrwa"), -"run_backward": SubResource("Animation_8nhf0"), -"run_forward": SubResource("Animation_tq1m2"), -"run_left": SubResource("Animation_ggabv"), -"run_right": SubResource("Animation_p6pta"), -"t_pose": SubResource("Animation_a6skd") +"death": SubResource("Animation_6ahn1"), +"idle": SubResource("Animation_s40u7"), +"jump": SubResource("Animation_pkley"), +"jump_up": SubResource("Animation_pvd7g"), +"run_backward": SubResource("Animation_pddls"), +"run_forward": SubResource("Animation_3ql0w"), +"run_left": SubResource("Animation_8iaxi"), +"run_right": SubResource("Animation_jep8n"), +"t_pose": SubResource("Animation_bdd76") } [sub_resource type="AnimationNodeAnimation" id="AnimationNodeAnimation_lw37l"] @@ -3453,7 +3453,6 @@ input_2/auto_advance = false input_2/reset = true [sub_resource type="AnimationNodeBlendTree" id="AnimationNodeBlendTree_1ok7t"] -graph_offset = Vector2(-328.518, -6.27956) nodes/Death/node = SubResource("AnimationNodeOneShot_ncg4i") nodes/Death/position = Vector2(860, 380) "nodes/Death 2/node" = SubResource("AnimationNodeAnimation_lw37l") @@ -3474,18 +3473,20 @@ nodes/output/position = Vector2(1300, 160) node_connections = [&"Death", 0, &"Death 2", &"GroundSpeed", 0, &"Locomotion", &"OneShot", 0, &"JumpUp", &"OneShot", 1, &"JumpLoop", &"Transition", 0, &"GroundSpeed", &"Transition", 1, &"OneShot", &"Transition", 2, &"Death", &"output", 0, &"Transition"] [node name="Vanguard" instance=ExtResource("1_d2ik6")] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -6.61612e-06, 0.000176162, 0.000105232) script = ExtResource("2_c22xr") [node name="Skeleton3D" parent="Node" index="0"] -bones/0/position = Vector3(0.0091125, 0.978834, 0.00716115) -bones/0/rotation = Quaternion(-0.0304238, -0.416145, -0.0281289, 0.908354) -bones/2/rotation = Quaternion(-0.00126834, -0.00431537, 0.019369, 0.999802) -bones/4/rotation = Quaternion(0.0745231, -0.00841037, 0.0181398, 0.997019) -bones/6/rotation = Quaternion(0.168689, -0.0033058, 0.0113768, 0.985598) -bones/8/rotation = Quaternion(0.678951, -0.411553, 0.402316, 0.455842) -bones/10/rotation = Quaternion(0.208378, -0.0845422, -0.32573, 0.918331) -bones/12/rotation = Quaternion(0.0793166, 0.208833, -0.74794, 0.625048) -bones/14/rotation = Quaternion(0.0322551, 0.0838214, -0.13899, 0.986213) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.00146306, 0, -0.00178421) +bones/0/position = Vector3(-0.0048219, 0.946668, 0.00678214) +bones/0/rotation = Quaternion(-0.0341192, -0.409249, -0.0209221, 0.911545) +bones/2/rotation = Quaternion(-0.00595832, -0.0014545, 0.0101407, 0.99993) +bones/4/rotation = Quaternion(0.0691268, 0.00227406, 0.0147948, 0.997496) +bones/6/rotation = Quaternion(0.160951, 0.00623474, 0.0096637, 0.986895) +bones/8/rotation = Quaternion(0.675761, -0.399581, 0.409695, 0.464577) +bones/10/rotation = Quaternion(0.212344, -0.0870591, -0.287653, 0.929831) +bones/12/rotation = Quaternion(0.0811501, 0.206806, -0.754068, 0.618084) +bones/14/rotation = Quaternion(0.00943715, 0.0971687, -0.145046, 0.984597) bones/20/rotation = Quaternion(-0.123455, 0.0248346, 0.23344, 0.964183) bones/24/rotation = Quaternion(0.0450683, -0.000817796, 0.0508488, 0.997689) bones/26/rotation = Quaternion(0.100545, -1.16532e-07, 0.00792588, 0.994901) @@ -3499,12 +3500,13 @@ bones/44/rotation = Quaternion(0.633142, 6.48257e-09, 0.04991, 0.772425) bones/50/rotation = Quaternion(0.729888, -4.88266e-08, 0.0575362, 0.681141) bones/52/rotation = Quaternion(0.624011, -9.63141e-08, 0.04919, 0.779865) bones/54/rotation = Quaternion(-1.18924e-16, 2.81961e-21, -4.50738e-10, 1) -bones/56/rotation = Quaternion(-0.0282395, 0.0506182, -0.0137337, 0.998224) -bones/58/rotation = Quaternion(-0.0161163, 0.300902, -0.0735058, 0.950682) -bones/62/rotation = Quaternion(0.672582, 0.38819, -0.440775, 0.450177) -bones/64/rotation = Quaternion(0.378653, -0.28528, 0.144158, 0.868594) -bones/66/rotation = Quaternion(0.558028, -0.577928, 0.408015, 0.433737) -bones/68/rotation = Quaternion(0.0146346, -0.253118, 0.0594528, 0.965496) +bones/56/rotation = Quaternion(-0.0254885, 0.0439755, -0.00910637, 0.998666) +bones/58/rotation = Quaternion(-0.0119802, 0.289956, -0.0527053, 0.955513) +bones/62/rotation = Quaternion(0.689943, 0.375565, -0.410267, 0.463261) +bones/64/rotation = Quaternion(0.337746, -0.290519, 0.159479, 0.880961) +bones/66/rotation = Quaternion(0.540371, -0.580679, 0.406779, 0.453147) +bones/68/position = Vector3(0.000474975, 0.275475, 0.035475) +bones/68/rotation = Quaternion(0.0150529, -0.289001, 0.0720108, 0.954498) bones/70/rotation = Quaternion(0.155965, 0.0109114, -0.00107202, 0.987702) bones/72/rotation = Quaternion(0.563923, 4.19095e-08, -0.0577906, 0.823803) bones/74/rotation = Quaternion(0.285209, 0.0197164, -0.0936782, 0.953673) @@ -3521,22 +3523,22 @@ bones/100/rotation = Quaternion(-6.44756e-14, -1.4372e-11, -3.12192e-10, 1) bones/102/rotation = Quaternion(0.179829, 0.0890365, -0.000307644, 0.97966) bones/104/rotation = Quaternion(0.388149, 1.28057e-07, -0.0397774, 0.920738) bones/106/rotation = Quaternion(0.372324, -1.37021e-07, -0.0381557, 0.927318) -bones/110/rotation = Quaternion(-0.139688, 0.221395, 0.964738, 0.0274396) -bones/112/rotation = Quaternion(-0.373597, -0.00959325, -0.0354531, 0.926864) -bones/114/rotation = Quaternion(0.517785, 0.099108, 0.0311123, 0.849181) -bones/116/rotation = Quaternion(0.358209, 0.0547665, 0.027865, 0.931617) -bones/120/rotation = Quaternion(0.15189, 0.197526, 0.967067, -0.0518993) -bones/122/rotation = Quaternion(-0.393453, -0.0720602, 0.0315744, 0.915972) -bones/124/rotation = Quaternion(0.357526, -0.0428325, 0.0112871, 0.932852) -bones/126/rotation = Quaternion(0.421703, -0.0297867, 0.00958528, 0.906194) +bones/110/rotation = Quaternion(-0.167577, 0.223934, 0.958827, 0.0492099) +bones/112/rotation = Quaternion(-0.466474, -0.0088339, -0.0232928, 0.884184) +bones/114/rotation = Quaternion(0.575696, 0.0793941, -0.0250592, 0.813414) +bones/116/rotation = Quaternion(0.355062, 0.0493655, 0.0246355, 0.933213) +bones/120/rotation = Quaternion(0.115252, 0.282473, 0.945749, -0.111737) +bones/122/rotation = Quaternion(-0.494906, -0.0647935, 0.0183973, 0.866332) +bones/124/rotation = Quaternion(0.417677, -0.0431149, 0.00625689, 0.90755) +bones/126/rotation = Quaternion(0.397818, -0.0427722, -0.00601182, 0.916447) [node name="HandAttachment" type="BoneAttachment3D" parent="Node/Skeleton3D" index="0"] -transform = Transform3D(-0.17714, 0.0688076, 0.981778, 0.933879, 0.326602, 0.145608, -0.310631, 0.942654, -0.122112, -0.237544, 1.16641, 0.0838305) +transform = Transform3D(-0.152214, 0.0548832, 0.986823, 0.933991, 0.334546, 0.125459, -0.323252, 0.94078, -0.102183, -0.261612, 1.14328, 0.0896011) bone_name = "mixamorigRightHand" bone_idx = 14 -[node name="SpaceGun" parent="Node/Skeleton3D/HandAttachment" index="0" instance=ExtResource("3_c7kd6")] -transform = Transform3D(-0.181021, 0.947541, -0.263434, -0.081767, 0.252432, 0.964154, 0.980074, 0.196072, 0.0317819, -0.0066033, 0.122139, 0.016189) +[node name="SpaceGun" parent="Node/Skeleton3D/HandAttachment" index="0" instance=ExtResource("3_s13xh")] +transform = Transform3D(-0.210484, 0.94927, -0.233628, -0.00594419, 0.237735, 0.971312, 0.977578, 0.205834, -0.0443972, 0.0325471, 0.363239, 0.0339617) [node name="SpineIK" type="SkeletonIK3D" parent="Node/Skeleton3D" index="3"] process_priority = 1 @@ -3551,7 +3553,7 @@ playback_default_blend_time = 0.2 [node name="AnimationTree" type="AnimationTree" parent="." index="2"] libraries = { -"": SubResource("AnimationLibrary_hxhxq") +"": SubResource("AnimationLibrary_rvkv6") } tree_root = SubResource("AnimationNodeBlendTree_1ok7t") anim_player = NodePath("../AnimationPlayer") diff --git a/entities/player/player.gd b/entities/player/player.gd index 727182f..75bd6c9 100644 --- a/entities/player/player.gd +++ b/entities/player/player.gd @@ -106,9 +106,6 @@ func _fire_primary() -> void: weapon.transform = _original_weapon_transform weapon.fire_primary() weapon.transform = current_weapon_transform - if _is_pawn(): - animation_player.stop() - animation_player.play("shoot") func _jump() -> void: if _is_player_dead(): @@ -158,11 +155,8 @@ func _process(_delta : float) -> void: iff.show() if not _is_pawn(): $Smoothing/ThirdPerson/PlayerMesh.global_transform.basis = Basis.from_euler(Vector3(0.0, input.camera_rotation.x + PI, 0.0)) - else: - if animation_player.current_animation == "shoot": - pass - else: - animation_player.play("idle") + elif not %Inventory/SpaceGun/Mesh/AnimationPlayer.is_playing(): + %Inventory/SpaceGun/Mesh/AnimationPlayer.play("idle") %SpringArm3D.global_transform.basis = Basis.from_euler(Vector3(input.camera_rotation.y, input.camera_rotation.x, 0.0)) func _physics_process(delta : float) -> void: diff --git a/entities/player/player.tscn b/entities/player/player.tscn index 9e99c3d..f821659 100644 --- a/entities/player/player.tscn +++ b/entities/player/player.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=21 format=3 uid="uid://cbhx1xme0sb7k"] +[gd_scene load_steps=18 format=3 uid="uid://cbhx1xme0sb7k"] [ext_resource type="Script" path="res://entities/player/player.gd" id="1_mk68k"] [ext_resource type="PackedScene" uid="uid://drbefw6akui2v" path="res://entities/player/assets/vanguard.tscn" id="2_beyex"] @@ -22,57 +22,6 @@ absorbent = true material = SubResource("StandardMaterial3D_1hdqa") radius = 0.25 -[sub_resource type="Animation" id="Animation_cb46l"] -length = 0.001 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Smoothing/SpringArm3D:position") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 0.0001), -"transitions": PackedFloat32Array(1, 1), -"update": 0, -"values": [Vector3(0, 0.5, 0), Vector3(0, 0.5, 0)] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("Smoothing/SpringArm3D: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("Smoothing/SpringArm3D/Inventory/SpaceGun:position") -tracks/2/interp = 1 -tracks/2/loop_wrap = true -tracks/2/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector3(0.15, -0.3, -0.2)] -} -tracks/3/type = "value" -tracks/3/imported = false -tracks/3/enabled = true -tracks/3/path = NodePath("Smoothing/SpringArm3D/Inventory/SpaceGun:rotation") -tracks/3/interp = 1 -tracks/3/loop_wrap = true -tracks/3/keys = { -"times": PackedFloat32Array(0), -"transitions": PackedFloat32Array(1), -"update": 0, -"values": [Vector3(0, 3.14159, 0)] -} - [sub_resource type="Animation" id="Animation_yqgrk"] resource_name = "death" tracks/0/type = "value" @@ -100,68 +49,9 @@ tracks/1/keys = { "values": [Vector3(0, 0, 0), Vector3(-1.35254, 0, 0)] } -[sub_resource type="Animation" id="Animation_as2v0"] -resource_name = "idle" -length = 3.0 -loop_mode = 1 -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Smoothing/SpringArm3D/Inventory/SpaceGun:position") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 1.5), -"transitions": PackedFloat32Array(-2, -2), -"update": 0, -"values": [Vector3(0.15, -0.3, -0.2), Vector3(0.15, -0.3, -0.2)] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("Smoothing/SpringArm3D/Inventory/SpaceGun:rotation") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0, 1.5), -"transitions": PackedFloat32Array(-2, -2), -"update": 0, -"values": [Vector3(0, 3.14159, 0), Vector3(0.0698132, 3.14159, 0)] -} - -[sub_resource type="Animation" id="Animation_p84l0"] -resource_name = "shoot" -tracks/0/type = "value" -tracks/0/imported = false -tracks/0/enabled = true -tracks/0/path = NodePath("Smoothing/SpringArm3D/Inventory/SpaceGun:position") -tracks/0/interp = 1 -tracks/0/loop_wrap = true -tracks/0/keys = { -"times": PackedFloat32Array(0, 1), -"transitions": PackedFloat32Array(0.5, 1), -"update": 0, -"values": [Vector3(0.15, -0.3, -0.2), Vector3(0.15, -0.3, -0.2)] -} -tracks/1/type = "value" -tracks/1/imported = false -tracks/1/enabled = true -tracks/1/path = NodePath("Smoothing/SpringArm3D/Inventory/SpaceGun:rotation") -tracks/1/interp = 1 -tracks/1/loop_wrap = true -tracks/1/keys = { -"times": PackedFloat32Array(0, 1), -"transitions": PackedFloat32Array(0.5, 1), -"update": 0, -"values": [Vector3(-0.0584511, 3.14159, 8.83593e-09), Vector3(0, 3.14159, 0)] -} - [sub_resource type="AnimationLibrary" id="AnimationLibrary_hg307"] _data = { -"RESET": SubResource("Animation_cb46l"), -"death": SubResource("Animation_yqgrk"), -"idle": SubResource("Animation_as2v0"), -"shoot": SubResource("Animation_p84l0") +"death": SubResource("Animation_yqgrk") } [sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_rqdp6"] @@ -274,9 +164,10 @@ fov = 90.0 near = 0.1 [node name="Inventory" type="Node3D" parent="Smoothing/SpringArm3D"] +unique_name_in_owner = true [node name="SpaceGun" parent="Smoothing/SpringArm3D/Inventory" node_paths=PackedStringArray("holder") instance=ExtResource("4_6jh57")] -transform = Transform3D(-1, 0, 2.53518e-06, 0, 1, 0, -2.53518e-06, 0, -1, 0.15, -0.3, -0.2) +transform = Transform3D(-1, 0, 2.53518e-06, 0, 1, 0, -2.53518e-06, 0, -1, 0.15, -0.3, -0.55) holder = NodePath("../../../..") [node name="SpineIKTarget" type="Node3D" parent="Smoothing/SpringArm3D"] diff --git a/entities/weapons/space_gun/assets/disclauncher.glb b/entities/weapons/space_gun/assets/disclauncher.glb index 5c319b324ffa78ebfe63075780e8c16edd2a4bb5..a57cce86c5e5c5ab7bcac0e98fce6a044b1f8984 100644 GIT binary patch delta 60556 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�SjQeYhT!<$6>cARJNa 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%0APdSx<*)@( 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 literal 167880 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 bool: return weapon_state == WeaponState.WEAPON_READY func fire_primary() -> void: + # check permission if not can_fire(): return - + # init projectile var projectile : Node = PROJECTILE.instantiate() + # configure projectile + projectile.shooter = holder projectile.transform = nozzle.global_transform projectile.velocity = nozzle.global_basis.z.normalized() * projectile.speed - projectile.shooter = holder var inheritance_factor : float = clamp(inheritance, 0., 1.) projectile.velocity += (inventory.owner.linear_velocity * inheritance_factor) + # play the fire animation + $Mesh/AnimationPlayer.play("fire") + # add projectile as sibling of the owner inventory.owner.add_sibling(projectile) + # ensure projectile does not collide with owner var collider : ShapeCast3D = projectile.shape_cast collider.add_exception(inventory.owner) + # update states weapon_state = WeaponState.WEAPON_RELOADING await get_tree().create_timer(reload_time).timeout weapon_state = WeaponState.WEAPON_READY diff --git a/entities/weapons/space_gun/space_gun.tscn b/entities/weapons/space_gun/space_gun.tscn index 91cf752..64ab1e4 100644 --- a/entities/weapons/space_gun/space_gun.tscn +++ b/entities/weapons/space_gun/space_gun.tscn @@ -8,7 +8,27 @@ script = ExtResource("1_6sm4s") PROJECTILE = ExtResource("2_wvneg") -[node name="disclauncher" parent="." instance=ExtResource("3_5k2xm")] +[node name="Mesh" parent="." instance=ExtResource("3_5k2xm")] + +[node name="Skeleton3D" parent="Mesh/Armature" index="0"] +bones/0/scale = Vector3(1, 1, 1) +bones/1/rotation = Quaternion(-0.707107, 5.33851e-08, 5.33851e-08, 0.707107) +bones/1/scale = Vector3(1, 1, 1) +bones/2/rotation = Quaternion(-0.707107, 5.33851e-08, 5.33851e-08, 0.707107) +bones/2/scale = Vector3(1, 1, 1) +bones/3/rotation = Quaternion(-0.707107, 5.33851e-08, 5.33851e-08, 0.707107) +bones/3/scale = Vector3(1, 1, 1) + +[node name="grip" parent="Mesh/Armature/Skeleton3D" index="0"] +transform = Transform3D(1, -4.26326e-14, -2.13163e-14, 2.84217e-14, 1, -3.57628e-07, 3.2684e-14, 3.57628e-07, 1, -1.42109e-14, -2.98023e-07, 2.38419e-07) + +[node name="main" parent="Mesh/Armature/Skeleton3D" index="1"] +transform = Transform3D(1, -4.26326e-14, -2.13163e-14, 2.84217e-14, 1, -3.57628e-07, 3.2684e-14, 3.57628e-07, 1, -1.42109e-14, -2.98023e-07, 2.38419e-07) + +[node name="sides" parent="Mesh/Armature/Skeleton3D" index="2"] +transform = Transform3D(1, -4.26326e-14, -2.13163e-14, 2.84217e-14, 1, -3.57628e-07, 3.2684e-14, 3.57628e-07, 1, -1.42109e-14, -2.98023e-07, 2.38419e-07) [node name="Nozzle" type="Node3D" parent="."] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0.111355, 0.540839) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0.27) + +[editable path="Mesh"] diff --git a/environments/desert.tres b/environments/desert.tres index d55112b..097fe5d 100644 --- a/environments/desert.tres +++ b/environments/desert.tres @@ -6,7 +6,6 @@ sky_horizon_color = Color(0.819608, 0.592157, 0.556863, 1) sky_curve = 0.235375 ground_bottom_color = Color(0.819608, 0.592157, 0.556863, 1) ground_horizon_color = Color(0.819608, 0.592157, 0.556863, 1) -ground_curve = 0.02 [sub_resource type="Sky" id="Sky_mobku"] sky_material = SubResource("ProceduralSkyMaterial_8mbvu") diff --git a/interfaces/menus/boot/boot.tscn b/interfaces/menus/boot/boot.tscn index f32d9af..67fa3f0 100644 --- a/interfaces/menus/boot/boot.tscn +++ b/interfaces/menus/boot/boot.tscn @@ -36,7 +36,7 @@ func _show_menu(menu : PanelContainer) -> void: bg_color = Color(0.501961, 0.501961, 0.501961, 0.25098) [sub_resource type="GDScript" id="GDScript_tc1bm"] -script/source = "class_name Multiplayer extends PanelContainer +script/source = "extends PanelContainer const DEFAULT_HOST : String = \"localhost\" const DEFAULT_PORT : int = 9000 diff --git a/main.tscn b/main.tscn index b6999d0..14fe0f0 100644 --- a/main.tscn +++ b/main.tscn @@ -11,46 +11,41 @@ script/source = "class_name Game extends Node3D @export var SINGLEPLAYER : PackedScene @export var MULTIPLAYER : PackedScene -var mode : Node +var mode : Node: + set(new_mode): + # clean up previous mode + if mode != null: + mode.queue_free() + # keep reference to new mode + mode = new_mode + # setup new mode + if new_mode != null: + add_child(new_mode) + Input.mouse_mode = Input.MOUSE_MODE_CAPTURED + else: + Input.mouse_mode = Input.MOUSE_MODE_VISIBLE func _ready() -> void: $BootMenu.start_demo.connect(_start_demo) $BootMenu/Multiplayer.start_server.connect(_start_server) $BootMenu/Multiplayer.join_server.connect(_join_server) -func _start_demo() -> void: - _set_game_mode(SINGLEPLAYER.instantiate()) - $BootMenu.hide() - -func _start_server(port : int, nickname : String) -> void: - _set_game_mode(MULTIPLAYER.instantiate()) - mode.start_server(port, nickname) - $BootMenu.hide() - -func _join_server(host : String, port : int, nickname : String) -> void: - _set_game_mode(MULTIPLAYER.instantiate()) - mode.connected_to_server.connect($BootMenu/Multiplayer._on_connected_to_server) - mode.connection_failed.connect($BootMenu/Multiplayer._on_connection_failed) - mode.join_server(host, port, nickname) - -func _input(event : InputEvent) -> void: - if event.is_action_pressed(\"exit\"): - _set_game_mode(null) - multiplayer.multiplayer_peer.close() - $BootMenu.show() - -func _set_game_mode(new_mode : Node) -> void: - if mode != null: - remove_child(mode) - mode.queue_free() - mode = new_mode - if mode == null: - Input.mouse_mode = Input.MOUSE_MODE_VISIBLE - else: - Input.mouse_mode = Input.MOUSE_MODE_CAPTURED - add_child(mode) - func _unhandled_input(event : InputEvent) -> void: + # escape key pressed + if event.is_action_pressed(\"exit\"): + # game modes cleanup + if mode is Multiplayer: + multiplayer.multiplayer_peer.close() + # reset game mode + mode = null + # check for debug build + if not OS.is_debug_build(): + # exit with success + get_tree().quit(0) + else: + # show boot menu + $BootMenu.show() + # switch window mode if event.is_action_pressed(\"window_mode\"): if DisplayServer.window_get_mode() == DisplayServer.WINDOW_MODE_FULLSCREEN: @@ -64,6 +59,21 @@ func _unhandled_input(event : InputEvent) -> void: elif Input.mouse_mode == Input.MOUSE_MODE_CAPTURED: Input.mouse_mode = Input.MOUSE_MODE_VISIBLE + +func _start_demo() -> void: + mode = SINGLEPLAYER.instantiate() + $BootMenu.hide() + +func _start_server(port : int, nickname : String) -> void: + mode = MULTIPLAYER.instantiate() + mode.start_server(port, nickname) + $BootMenu.hide() + +func _join_server(host : String, port : int, nickname : String) -> void: + mode = MULTIPLAYER.instantiate() + mode.connected_to_server.connect($BootMenu/Multiplayer._on_connected_to_server) + mode.connection_failed.connect($BootMenu/Multiplayer._on_connection_failed) + mode.join_server(host, port, nickname) " [node name="Game" type="Node3D"] diff --git a/modes/demo.tscn b/modes/demo.tscn index fc90ac3..3fe8a59 100644 --- a/modes/demo.tscn +++ b/modes/demo.tscn @@ -16,7 +16,7 @@ script/source = "extends Node func _ready() -> void: player_node.died.connect(respawn_player) -func respawn_player(player : Player) -> void: +func respawn_player(player : Player, _killer_id : int) -> void: player.respawn(player_respawn_location) " diff --git a/modes/multiplayer.gd b/modes/multiplayer.gd new file mode 100644 index 0000000..9a91d49 --- /dev/null +++ b/modes/multiplayer.gd @@ -0,0 +1,128 @@ +# This file is part of open-fpsz. +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . +class_name Multiplayer extends Node + +@export_category("Parameters") +@export var MAP : PackedScene +@export var PLAYER : PackedScene +@export var FLAG : PackedScene +@export var MAX_CLIENTS : int = 24 +@export var RESPAWN_TIME : float = 3.0 + +@onready var players : Node = $Players +@onready var objectives : Node = $Objectives +@onready var map : Node = $Map +@onready var scoreboard : Scoreboard = $Scoreboard +@onready var scoreboard_ui : Node = $ScoreboardUI + +var _map_manager : Map + +signal connected_to_server +signal connection_failed + +func start_server(port : int, nickname : String) -> void: + var peer : ENetMultiplayerPeer = ENetMultiplayerPeer.new() + peer.create_server(port, MAX_CLIENTS) + + multiplayer.multiplayer_peer = peer + + _load_map.call_deferred(MAP, nickname) + + multiplayer.peer_disconnected.connect(remove_player) + +func join_server(host : String, port : int, nickname : String) -> void: + var peer : ENetMultiplayerPeer = ENetMultiplayerPeer.new() + peer.create_client(host, port) + multiplayer.connected_to_server.connect(_on_connected_to_server.bind(nickname)) + multiplayer.connection_failed.connect(_on_connection_failed) + multiplayer.multiplayer_peer = peer + +func _on_connected_to_server(nickname : String) -> void: + connected_to_server.emit() + scoreboard.request_scoreboard_from_authority.rpc() + _join_match.rpc(nickname) + +func _on_connection_failed() -> void: + connection_failed.emit() + +func _on_player_died(player : Player, killer_id : int) -> void: + if player.player_id != killer_id: + var node_name : String = str(killer_id) + if players.has_node(node_name): + var killer : Player = players.get_node(node_name) + scoreboard.increment_kill_count(killer) + scoreboard.add_score_to_player(killer, 10) + scoreboard.broadcast_player_score_update(killer) + await get_tree().create_timer(RESPAWN_TIME).timeout + respawn_player(player) + +func respawn_player(player : Player) -> void: + var spawn_location : Vector3 = _map_manager.get_player_spawn().position + player.respawn(spawn_location) + +func add_player(peer_id : int, nickname : String) -> void: + var player : Player = PLAYER.instantiate() + player.name = str(peer_id) + player.player_id = peer_id + player.nickname = nickname + player.global_position = _map_manager.get_player_spawn().position + players.add_child(player) + player.died.connect(_on_player_died) + scoreboard.add_entry(player) + print("Peer `%s` connected" % player.name) + +func remove_player(peer_id : int) -> void: + var node_name : String = str(peer_id) + if players.has_node(node_name): + var player : Player = players.get_node(node_name) + scoreboard.remove_entry(player) + player.die(-1) + player.queue_free() + print("Peer `%s` disconnected" % node_name) + +func _load_map(scene : PackedScene, nickname : String) -> void: + var map_scene : Node = scene.instantiate() + _map_manager = map_scene + map_scene.ready.connect(_add_flag) + if DisplayServer.get_name() != "headless": + add_player(1, nickname) + map.add_child(map_scene) + +func _add_flag() -> void: + var flag : Flag = FLAG.instantiate() + flag.global_position = _map_manager.get_flagstand().global_position + objectives.add_child(flag) + +func _unhandled_input(event : InputEvent) -> void: + if event.is_action_pressed("scoreboard"): + var entries : Array = scoreboard.get_entries() + for entry : Scoreboard.ScoreboardEntry in entries: + var entry_label : Label = Label.new() + entry_label.text = "%s | kills: %s | score: %s" % [entry.nickname, entry.kills, entry.score] + %Scores.add_child(entry_label) + scoreboard_ui.show() + elif event.is_action_released("scoreboard"): + scoreboard_ui.hide() + for score_label in %Scores.get_children(): + score_label.queue_free() + +@rpc("any_peer") +func _join_match(nickname : String) -> void: + if is_multiplayer_authority(): + add_player(multiplayer.get_remote_sender_id(), nickname) + +func _exit_tree() -> void: + if is_multiplayer_authority(): + multiplayer.peer_disconnected.disconnect(remove_player) diff --git a/modes/multiplayer.tscn b/modes/multiplayer.tscn index df1397c..7f504b0 100644 --- a/modes/multiplayer.tscn +++ b/modes/multiplayer.tscn @@ -1,129 +1,13 @@ [gd_scene load_steps=6 format=3 uid="uid://bvwxfgygm2xb8"] +[ext_resource type="Script" path="res://modes/multiplayer.gd" id="1_4t1ad"] [ext_resource type="PackedScene" uid="uid://chbno00ugl6te" path="res://maps/genesis/genesis.tscn" id="1_nulvv"] [ext_resource type="PackedScene" uid="uid://cbhx1xme0sb7k" path="res://entities/player/player.tscn" id="2_og1vb"] [ext_resource type="PackedScene" uid="uid://c88l3h0ph00c7" path="res://entities/flag/flag.tscn" id="3_h0rie"] [ext_resource type="Script" path="res://modes/scoreboard.gd" id="4_n0mhp"] -[sub_resource type="GDScript" id="GDScript_1qrbp"] -script/source = "class_name Multiplayer extends Node - -@export_category(\"Parameters\") -@export var MAP : PackedScene -@export var PLAYER : PackedScene -@export var FLAG : PackedScene -@export var MAX_CLIENTS : int = 24 -@export var RESPAWN_TIME : float = 3.0 - -@onready var players : Node = $Players -@onready var objectives : Node = $Objectives -@onready var map : Node = $Map -@onready var scoreboard : Scoreboard = $Scoreboard -@onready var scoreboard_ui : Node = $ScoreboardUI - -var _map_manager : Map - -signal connected_to_server -signal connection_failed - -func start_server(port : int, nickname : String) -> void: - var peer : ENetMultiplayerPeer = ENetMultiplayerPeer.new() - peer.create_server(port, MAX_CLIENTS) - - multiplayer.multiplayer_peer = peer - - _load_map.call_deferred(MAP, nickname) - - multiplayer.peer_disconnected.connect(remove_player) - -func join_server(host : String, port : int, nickname : String) -> void: - var peer : ENetMultiplayerPeer = ENetMultiplayerPeer.new() - peer.create_client(host, port) - multiplayer.connected_to_server.connect(_on_connected_to_server.bind(nickname)) - multiplayer.connection_failed.connect(_on_connection_failed) - multiplayer.multiplayer_peer = peer - -func _on_connected_to_server(nickname : String) -> void: - connected_to_server.emit() - scoreboard.request_scoreboard_from_authority.rpc() - _join_match.rpc(nickname) - -func _on_connection_failed() -> void: - connection_failed.emit() - -func _on_player_died(player : Player, killer_id : int) -> void: - if player.player_id != killer_id: - var node_name : String = str(killer_id) - if players.has_node(node_name): - var killer : Player = players.get_node(node_name) - scoreboard.increment_kill_count(killer) - scoreboard.add_score_to_player(killer, 10) - scoreboard.broadcast_player_score_update(killer) - await get_tree().create_timer(RESPAWN_TIME).timeout - respawn_player(player) - -func respawn_player(player : Player) -> void: - var spawn_location : Vector3 = _map_manager.get_player_spawn().position - player.respawn(spawn_location) - -func add_player(peer_id : int, nickname : String) -> void: - var player : Player = PLAYER.instantiate() - player.name = str(peer_id) - player.player_id = peer_id - player.nickname = nickname - player.global_position = _map_manager.get_player_spawn().position - players.add_child(player) - player.died.connect(_on_player_died) - scoreboard.add_entry(player) - print(\"Peer `%s` connected\" % player.name) - -func remove_player(peer_id : int) -> void: - var node_name : String = str(peer_id) - if players.has_node(node_name): - var player : Player = players.get_node(node_name) - scoreboard.remove_entry(player) - player.die(-1) - player.queue_free() - print(\"Peer `%s` disconnected\" % node_name) - -func _load_map(scene : PackedScene, nickname : String) -> void: - var map_scene : Node = scene.instantiate() - _map_manager = map_scene - map_scene.ready.connect(_add_flag) - if DisplayServer.get_name() != \"headless\": - add_player(1, nickname) - map.add_child(map_scene) - -func _add_flag() -> void: - var flag : Flag = FLAG.instantiate() - flag.global_position = _map_manager.get_flagstand().global_position - objectives.add_child(flag) - -func _unhandled_input(event : InputEvent) -> void: - if event.is_action_pressed(\"scoreboard\"): - var entries : Array = scoreboard.get_entries() - for entry : Scoreboard.ScoreboardEntry in entries: - var entry_label : Label = Label.new() - entry_label.text = \"%s | kills: %s | score: %s\" % [entry.nickname, entry.kills, entry.score] - %Scores.add_child(entry_label) - scoreboard_ui.show() - elif event.is_action_released(\"scoreboard\"): - scoreboard_ui.hide() - for score_label in %Scores.get_children(): - score_label.queue_free() - -@rpc(\"any_peer\") -func _join_match(nickname : String) -> void: - if is_multiplayer_authority(): - add_player(multiplayer.get_remote_sender_id(), nickname) - -func _exit_tree() -> void: - if is_multiplayer_authority(): - multiplayer.peer_disconnected.disconnect(remove_player) -" - [node name="Multiplayer" type="Node"] -script = SubResource("GDScript_1qrbp") +script = ExtResource("1_4t1ad") MAP = ExtResource("1_nulvv") PLAYER = ExtResource("2_og1vb") FLAG = ExtResource("3_h0rie")