From 8818e77d236936e8ec9c505f69af5637e636e8c7 Mon Sep 17 00:00:00 2001 From: Minimata Date: Thu, 5 Jun 2025 13:58:22 +0200 Subject: [PATCH] gd: added hit input --- player_controller/PlayerController.tscn | 5 +++- player_controller/Scripts/PlayerController.cs | 19 ++++++------ systems/inputs/input_system.gd | 8 ++++- systems/inputs/walk_mode/base_mode.tres | 29 +++++++++++++++++-- systems/inputs/walk_mode/hit.tres | 14 +++++++++ 5 files changed, 61 insertions(+), 14 deletions(-) create mode 100644 systems/inputs/walk_mode/hit.tres diff --git a/player_controller/PlayerController.tscn b/player_controller/PlayerController.tscn index 15cb34e..dbf54cb 100644 --- a/player_controller/PlayerController.tscn +++ b/player_controller/PlayerController.tscn @@ -1,4 +1,4 @@ -[gd_scene load_steps=28 format=3 uid="uid://bei4nhkf8lwdo"] +[gd_scene load_steps=29 format=3 uid="uid://bei4nhkf8lwdo"] [ext_resource type="Script" uid="uid://bbbrf5ckydfna" path="res://player_controller/Scripts/PlayerController.cs" id="1_poq2x"] [ext_resource type="Resource" uid="uid://bl5crtu1gkrtr" path="res://systems/inputs/walk_mode/base_mode.tres" id="3_cresl"] @@ -16,6 +16,7 @@ [ext_resource type="Script" uid="uid://dwoppk8j5fxeg" path="res://player_controller/Scripts/DashSystem.cs" id="9_qu4wy"] [ext_resource type="Resource" uid="uid://bdit2jy5gbpts" path="res://systems/inputs/walk_mode/jump.tres" id="10_4u7i3"] [ext_resource type="Script" uid="uid://g8idirw62qe0" path="res://player_controller/Scripts/Bobbing.cs" id="10_7wk1w"] +[ext_resource type="Resource" uid="uid://b5gx3q8nvu72e" path="res://systems/inputs/walk_mode/hit.tres" id="11_cresl"] [ext_resource type="PackedScene" uid="uid://0ysqmqphq6mq" path="res://systems/head/head_system.tscn" id="11_rxwoh"] [ext_resource type="Script" uid="uid://b6k73aj5povgv" path="res://player_controller/Scripts/FieldOfView.cs" id="12_m2mxi"] [ext_resource type="Script" uid="uid://b5nk6ntlps3x0" path="res://systems/inputs/input_system.gd" id="16_v31n3"] @@ -46,6 +47,7 @@ aim_pressed = ExtResource("7_cresl") aim_released = ExtResource("8_lhb11") aim_canceled = ExtResource("9_5p2qc") jump = ExtResource("10_4u7i3") +hit = ExtResource("11_cresl") [node name="MeshInstance3D" type="MeshInstance3D" parent="."] transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 1, 0) @@ -138,6 +140,7 @@ StartVelocity = 4.0 [connection signal="input_aim_canceled" from="InputController" to="." method="OnInputAimCanceled"] [connection signal="input_aim_pressed" from="InputController" to="." method="OnInputAimPressed"] [connection signal="input_aim_released" from="InputController" to="." method="OnInputAimReleased"] +[connection signal="input_hit" from="InputController" to="." method="OnInputHitPressed"] [connection signal="input_jump" from="InputController" to="." method="OnInputJumpPressed"] [connection signal="input_move" from="InputController" to="." method="OnInputMove"] [connection signal="input_rotate_floorplane" from="InputController" to="." method="OnInputRotateFloorplane"] diff --git a/player_controller/Scripts/PlayerController.cs b/player_controller/Scripts/PlayerController.cs index ab3c60d..37e2c7c 100644 --- a/player_controller/Scripts/PlayerController.cs +++ b/player_controller/Scripts/PlayerController.cs @@ -73,6 +73,11 @@ public partial class PlayerController : CharacterBody3D DashSystem.CancelDash(); } + public void OnInputHitPressed() + { + GD.Print("OnInputHitPressed"); + } + public void OnInputJumpPressed() { bool doesCapsuleHaveCrouchingHeight = CapsuleCollider.IsCrouchingHeight(); @@ -81,28 +86,26 @@ public partial class PlayerController : CharacterBody3D if (!doesCapsuleHaveCrouchingHeight && !isPlayerDead) MoveSystem.Jump(IsOnFloor()); } - public override void _Ready() { - HeadSystem = GetNode("HeadSystem"); - HeadSystem.Init(); - _headCollisionDetectors = new RayCast3D[NumOfHeadCollisionDetectors]; - for (int i = 0; i < NumOfHeadCollisionDetectors; i++) { _headCollisionDetectors[i] = GetNode( "HeadCollisionDetectors/HeadCollisionDetector" + i); } + HeadSystem = GetNode("HeadSystem"); + HeadSystem.Init(); + // Getting dependencies of the components(In godot we manage this from upwards to downwards not vice versa) Camera3D camera = GetNode("HeadSystem/CameraSmooth/Camera3D"); + Node3D cameraSmooth = GetNode("HeadSystem/CameraSmooth"); RayCast3D stairsBelowRayCast3D = GetNode("StairsBelowRayCast3D"); RayCast3D stairsAheadRayCast3D = GetNode("StairsAheadRayCast3D"); - Node3D cameraSmooth = GetNode("HeadSystem/CameraSmooth"); // Getting universal setting from GODOT editor to be in sync float gravitySetting = (float)ProjectSettings.GetSetting("physics/3d/default_gravity"); @@ -162,7 +165,6 @@ public partial class PlayerController : CharacterBody3D DistortionRect = distortionRect, BlurRect = blurRect, }; - HealthSystem.Init(healthSystemParams); } @@ -190,7 +192,6 @@ public partial class PlayerController : CharacterBody3D IsOnFloorCustom = isOnFloorCustom(), Velocity = Velocity }; - Bobbing.PerformCameraBobbing(cameraBobbingParams); FieldOfView.FovParameters fovParams = new FieldOfView.FovParameters @@ -200,7 +201,6 @@ public partial class PlayerController : CharacterBody3D SprintSpeed = MoveSystem.SprintSpeed, Velocity = Velocity }; - FieldOfView.PerformFovAdjustment(fovParams); StairsSystem.UpStairsCheckParams upStairsCheckParams = new StairsSystem.UpStairsCheckParams @@ -260,7 +260,6 @@ public partial class PlayerController : CharacterBody3D BetweenCrouchingAndNormalHeight = CapsuleCollider.IsBetweenCrouchingAndNormalHeight(), Delta = (float)delta }; - StairsSystem.SlideCameraSmoothBackToOrigin(slideCameraParams); } diff --git a/systems/inputs/input_system.gd b/systems/inputs/input_system.gd index 58f12d7..c49b9f8 100644 --- a/systems/inputs/input_system.gd +++ b/systems/inputs/input_system.gd @@ -1,4 +1,5 @@ extends Node3D +class_name InputController @export_group("Mapping contexts") @export var base_mode:GUIDEMappingContext @@ -13,6 +14,7 @@ extends Node3D @export var aim_released:GUIDEAction @export var aim_canceled:GUIDEAction @export var jump:GUIDEAction +@export var hit:GUIDEAction signal input_move(value: Vector3) signal input_rotate_y(value: float) @@ -22,6 +24,7 @@ signal input_aim_pressed signal input_aim_released signal input_aim_canceled signal input_jump +signal input_hit func _ready() -> void: GUIDE.enable_mapping_context(base_mode) @@ -30,7 +33,10 @@ func _ready() -> void: aim_released.triggered.connect(on_input_aim_released) aim_canceled.triggered.connect(on_input_aim_canceled) jump.triggered.connect(on_input_jump) - + hit.triggered.connect(on_input_hit) + +func on_input_hit(): + input_hit.emit() func on_input_jump(): input_jump.emit() diff --git a/systems/inputs/walk_mode/base_mode.tres b/systems/inputs/walk_mode/base_mode.tres index 55aae55..5723232 100644 --- a/systems/inputs/walk_mode/base_mode.tres +++ b/systems/inputs/walk_mode/base_mode.tres @@ -1,4 +1,4 @@ -[gd_resource type="Resource" script_class="GUIDEMappingContext" load_steps=58 format=3 uid="uid://bl5crtu1gkrtr"] +[gd_resource type="Resource" script_class="GUIDEMappingContext" load_steps=63 format=3 uid="uid://bl5crtu1gkrtr"] [ext_resource type="Script" uid="uid://cpplm41b5bt6m" path="res://addons/guide/guide_action_mapping.gd" id="1_0pi3k"] [ext_resource type="Script" uid="uid://dsa1dnifd6w32" path="res://addons/guide/guide_mapping_context.gd" id="2_ho3ad"] @@ -23,6 +23,7 @@ [ext_resource type="Script" uid="uid://brsxcrai2te83" path="res://addons/guide/triggers/guide_trigger_chorded_action.gd" id="20_xcfo4"] [ext_resource type="Script" uid="uid://b52rqq28tuqpg" path="res://addons/guide/triggers/guide_trigger_pressed.gd" id="21_k8ji4"] [ext_resource type="Resource" uid="uid://bdit2jy5gbpts" path="res://systems/inputs/walk_mode/jump.tres" id="22_ufouq"] +[ext_resource type="Resource" uid="uid://b5gx3q8nvu72e" path="res://systems/inputs/walk_mode/hit.tres" id="23_oapce"] [sub_resource type="Resource" id="Resource_vkvga"] script = ExtResource("4_oapce") @@ -233,8 +234,32 @@ script = ExtResource("1_0pi3k") action = ExtResource("22_ufouq") input_mappings = Array[ExtResource("3_ufouq")]([SubResource("Resource_8w5gu")]) +[sub_resource type="Resource" id="Resource_nf3uo"] +script = ExtResource("19_2murt") +button = 10 +joy_index = -1 + +[sub_resource type="Resource" id="Resource_paxxe"] +script = ExtResource("21_k8ji4") +actuation_threshold = 0.5 + +[sub_resource type="Resource" id="Resource_500v3"] +script = ExtResource("3_ufouq") +override_action_settings = false +is_remappable = false +display_name = "" +display_category = "" +input = SubResource("Resource_nf3uo") +modifiers = Array[ExtResource("5_j3mg7")]([]) +triggers = Array[ExtResource("8_nf3uo")]([SubResource("Resource_paxxe")]) + +[sub_resource type="Resource" id="Resource_ew1hw"] +script = ExtResource("1_0pi3k") +action = ExtResource("23_oapce") +input_mappings = Array[ExtResource("3_ufouq")]([SubResource("Resource_500v3")]) + [resource] script = ExtResource("2_ho3ad") display_name = "" -mappings = Array[ExtResource("1_0pi3k")]([SubResource("Resource_88x08"), SubResource("Resource_tgr2g"), SubResource("Resource_iarn8"), SubResource("Resource_0hmrk"), SubResource("Resource_iihs4"), SubResource("Resource_0s4kt"), SubResource("Resource_xt1x5")]) +mappings = Array[ExtResource("1_0pi3k")]([SubResource("Resource_88x08"), SubResource("Resource_tgr2g"), SubResource("Resource_iarn8"), SubResource("Resource_0hmrk"), SubResource("Resource_iihs4"), SubResource("Resource_0s4kt"), SubResource("Resource_xt1x5"), SubResource("Resource_ew1hw")]) metadata/_custom_type_script = "uid://dsa1dnifd6w32" diff --git a/systems/inputs/walk_mode/hit.tres b/systems/inputs/walk_mode/hit.tres new file mode 100644 index 0000000..d83c0f5 --- /dev/null +++ b/systems/inputs/walk_mode/hit.tres @@ -0,0 +1,14 @@ +[gd_resource type="Resource" script_class="GUIDEAction" load_steps=2 format=3 uid="uid://b5gx3q8nvu72e"] + +[ext_resource type="Script" uid="uid://cluhc11vixkf1" path="res://addons/guide/guide_action.gd" id="1_hph1v"] + +[resource] +script = ExtResource("1_hph1v") +name = &"" +action_value_type = 0 +block_lower_priority_actions = true +emit_as_godot_actions = false +is_remappable = false +display_name = "" +display_category = "" +metadata/_custom_type_script = "uid://cluhc11vixkf1"