From d4db20b92bdd47271485ec14e602798f4290f633 Mon Sep 17 00:00:00 2001 From: ngtuanz1 Date: Sun, 31 May 2026 10:31:59 +0700 Subject: [PATCH] update Input new in script --- .idea/.idea.HALLUCINATE/.idea/workspace.xml | 33 ++-- .../CharacterController/vThirdPersonInput.cs | 142 ++++++++++++------ .../CharacterController/vMeleeCombatInput.cs | 26 ++-- .../Scripts/Shooter/vShooterMeleeInput.cs | 22 ++- .../Scripts/Player Controller/InputReader.cs | 33 ++++ 5 files changed, 171 insertions(+), 85 deletions(-) diff --git a/.idea/.idea.HALLUCINATE/.idea/workspace.xml b/.idea/.idea.HALLUCINATE/.idea/workspace.xml index 0425423b..0fae68d8 100644 --- a/.idea/.idea.HALLUCINATE/.idea/workspace.xml +++ b/.idea/.idea.HALLUCINATE/.idea/workspace.xml @@ -6,27 +6,11 @@ - - - - - - - + + + - - - - - - - - - - - - - + + + { "associatedIndex": 4 } @@ -79,7 +66,7 @@ "node.js.selected.package.eslint": "(autodetect)", "node.js.selected.package.tslint": "(autodetect)", "nodejs_package_manager_path": "npm", - "settings.editor.selected.configurable": "preferences.pluginManager", + "settings.editor.selected.configurable": "editor.preferences.completion", "to.speed.mode.migration.done": "true", "vue.rearranger.settings.migration": "true" } @@ -185,6 +172,10 @@ + + + + diff --git a/Assets/Invector-3rdPersonController/Basic Locomotion/Scripts/CharacterController/vThirdPersonInput.cs b/Assets/Invector-3rdPersonController/Basic Locomotion/Scripts/CharacterController/vThirdPersonInput.cs index 58821fdc..545951f0 100644 --- a/Assets/Invector-3rdPersonController/Basic Locomotion/Scripts/CharacterController/vThirdPersonInput.cs +++ b/Assets/Invector-3rdPersonController/Basic Locomotion/Scripts/CharacterController/vThirdPersonInput.cs @@ -1,6 +1,7 @@ using System.Collections; using UnityEngine; using UnityEngine.Events; +using UnityEngine.InputSystem; namespace Invector.vCharacterController { @@ -23,13 +24,19 @@ namespace Invector.vCharacterController public KeyCode toggleWalk = KeyCode.CapsLock; [Header("Movement Input")] - public GenericInput horizontalInput = new GenericInput("Horizontal", "LeftAnalogHorizontal", "Horizontal"); - public GenericInput verticalInput = new GenericInput("Vertical", "LeftAnalogVertical", "Vertical"); - public GenericInput sprintInput = new GenericInput("LeftShift", "LeftStickClick", "LeftStickClick"); - public GenericInput crouchInput = new GenericInput("C", "Y", "Y"); - public GenericInput strafeInput = new GenericInput("Tab", "RightStickClick", "RightStickClick"); - public GenericInput jumpInput = new GenericInput("Space", "X", "X"); - public GenericInput rollInput = new GenericInput("Q", "B", "B"); + + + + // public GenericInput horizontalInput = new GenericInput("Horizontal", "LeftAnalogHorizontal", "Horizontal"); + // public GenericInput verticalInput = new GenericInput("Vertical", "LeftAnalogVertical", "Vertical"); + // public GenericInput sprintInput = new GenericInput("LeftShift", "LeftStickClick", "LeftStickClick"); + // public GenericInput crouchInput = new GenericInput("C", "Y", "Y"); + // public GenericInput strafeInput = new GenericInput("Tab", "RightStickClick", "RightStickClick"); + // public GenericInput jumpInput = new GenericInput("Space", "X", "X"); + // public GenericInput rollInput = new GenericInput("Q", "B", "B"); + + [Header("New Input System")] + public OnlyScove.Scripts.InputReader inputReader; protected bool _lockInput = false; [HideInInspector] public virtual bool lockInput { get { return _lockInput; } set { _lockInput = value; } } @@ -37,11 +44,11 @@ namespace Invector.vCharacterController [vEditorToolbar("Camera Settings")] public bool lockCameraInput; public bool invertCameraInputVertical, invertCameraInputHorizontal; - [vEditorToolbar("Inputs")] + // [vEditorToolbar("Inputs")] [Header("Camera Input")] - public GenericInput rotateCameraXInput = new GenericInput("Mouse X", "RightAnalogHorizontal", "Mouse X"); - public GenericInput rotateCameraYInput = new GenericInput("Mouse Y", "RightAnalogVertical", "Mouse Y"); - public GenericInput cameraZoomInput = new GenericInput("Mouse ScrollWheel", "", ""); + // public GenericInput rotateCameraXInput = new GenericInput("Mouse X", "RightAnalogHorizontal", "Mouse X"); + // public GenericInput rotateCameraYInput = new GenericInput("Mouse Y", "RightAnalogVertical", "Mouse Y"); + // public GenericInput cameraZoomInput = new GenericInput("Mouse ScrollWheel", "", ""); [vEditorToolbar("Events")] public UnityEvent OnLockCamera; @@ -136,6 +143,33 @@ namespace Invector.vCharacterController ShowCursor(showCursorOnStart); LockCursor(unlockCursorOnStart); EnableOnAnimatorMove(); + if (inputReader != null) + { + // Nhảy (Jump) + inputReader.OnJumpEvent += () => + { + if (JumpConditions()) cc.Jump(true); + }; + + // Lộn vòng (Roll / Dodge) + inputReader.OnDodgeEvent += () => + { + if (RollConditions()) cc.Roll(); + }; + + // Ngồi (Crouch) + inputReader.OnCrouchEvent += () => + { + cc.AutoCrouch(); + cc.Crouch(); + }; + + // Đổi góc nhìn hoặc Khóa mục tiêu (Strafe) - Tuỳ bạn map nút nào vào OnToggleViewEvent + inputReader.OnToggleViewEvent += () => + { + cc.Strafe(); + }; + } } protected virtual IEnumerator CharacterInit() @@ -448,19 +482,26 @@ namespace Invector.vCharacterController public virtual void MoveInput() { + if (inputReader == null) return; if (!lockMoveInput) { // gets input var input = cc.input; - input.x = horizontalInput.GetAxisRaw(); - input.z = verticalInput.GetAxisRaw(); + // input.x = horizontalInput.GetAxisRaw(); + // input.z = verticalInput.GetAxisRaw(); + // Input.GetAxisRaw("Horizontal"); + // Input.GetAxisRaw("Vertical"); + + input.x = inputReader.MoveInput.x; + input.z = inputReader.MoveInput.y; cc.input = input; } - if (Input.GetKeyDown(toggleWalk)) - { - cc.alwaysWalkByDefault = !cc.alwaysWalkByDefault; - } + //if (Input.GetKeyDown(toggleWalk)) + //{ + //cc.alwaysWalkByDefault = !cc.alwaysWalkByDefault; + //} + Input.GetKeyDown(KeyCode.CapsLock); cc.ControlKeepDirection(); } @@ -488,28 +529,30 @@ namespace Invector.vCharacterController public virtual void StrafeInput() { - if (strafeInput.GetButtonDown()) - { - cc.Strafe(); - } + // if (strafeInput.GetButtonDown()) + // { + // cc.Strafe(); + // } } public virtual void SprintInput() { - if (sprintInput.useInput) - { - cc.Sprint(cc.useContinuousSprint ? sprintInput.GetButtonDown() : sprintInput.GetButton()); - } + // if (sprintInput.useInput) + // { + // cc.Sprint(cc.useContinuousSprint ? sprintInput.GetButtonDown() : sprintInput.GetButton()); + // } + if (inputReader == null) return; + cc.Sprint(inputReader.IsSprintHeld); } public virtual void CrouchInput() { cc.AutoCrouch(); - if (crouchInput.useInput && crouchInput.GetButtonDown()) - { - cc.Crouch(); - } + // if (crouchInput.useInput && crouchInput.GetButtonDown()) + // { + // cc.Crouch(); + // } } /// @@ -526,10 +569,10 @@ namespace Invector.vCharacterController /// public virtual void JumpInput() { - if (jumpInput.GetButtonDown() && JumpConditions()) - { - cc.Jump(true); - } + // if (jumpInput.GetButtonDown() && JumpConditions()) + // { + // cc.Jump(true); + // } } /// @@ -546,10 +589,10 @@ namespace Invector.vCharacterController /// public virtual void RollInput() { - if (rollInput.GetButtonDown() && RollConditions()) - { - cc.Roll(); - } + // if (rollInput.GetButtonDown() && RollConditions()) + // { + // cc.Roll(); + // } } #endregion @@ -567,20 +610,19 @@ namespace Invector.vCharacterController { return; } + if (!cameraMain || tpCamera == null || inputReader == null) return; - var Y = lockCameraInput ? 0f : rotateCameraYInput.GetAxis(); - var X = lockCameraInput ? 0f : rotateCameraXInput.GetAxis(); - if (invertCameraInputHorizontal) - { - X *= -1; - } - - if (invertCameraInputVertical) - { - Y *= -1; - } - - var zoom = cameraZoomInput.GetAxis(); + // var Y = lockCameraInput ? 0f : rotateCameraYInput.GetAxis(); + // var X = lockCameraInput ? 0f : rotateCameraXInput.GetAxis(); + + var Y = lockCameraInput ? 0f : inputReader.LookInput.y; + var X = lockCameraInput ? 0f : inputReader.LookInput.x; + + if (invertCameraInputHorizontal) X *= -1; + if (invertCameraInputVertical) Y *= -1; + + // var zoom = cameraZoomInput.GetAxis(); + var zoom = inputReader.ScrollInput.y; tpCamera.RotateCamera(X, Y); if (!lockCameraInput) diff --git a/Assets/Invector-3rdPersonController/Melee Combat/Scripts/CharacterController/vMeleeCombatInput.cs b/Assets/Invector-3rdPersonController/Melee Combat/Scripts/CharacterController/vMeleeCombatInput.cs index 1a234ff2..fff544a4 100644 --- a/Assets/Invector-3rdPersonController/Melee Combat/Scripts/CharacterController/vMeleeCombatInput.cs +++ b/Assets/Invector-3rdPersonController/Melee Combat/Scripts/CharacterController/vMeleeCombatInput.cs @@ -58,6 +58,11 @@ namespace Invector.vCharacterController protected override void Start() { base.Start(); + if (inputReader != null) + { + inputReader.OnAttackEvent += TriggerWeakAttack; + inputReader.OnStrongAttackEvent += TriggerStrongAttack; + } } protected override void LateUpdate() @@ -82,9 +87,9 @@ namespace Invector.vCharacterController if (MeleeAttackConditions() && !lockMeleeInput) { - MeleeWeakAttackInput(); - MeleeStrongAttackInput(); - BlockingInput(); + // MeleeWeakAttackInput(); + // MeleeStrongAttackInput(); + // BlockingInput(); } else { @@ -149,7 +154,8 @@ namespace Invector.vCharacterController return; } - isBlocking = blockInput.GetButton() && cc.currentStamina > 0 && !cc.customAction && !isAttacking; + // isBlocking = blockInput.GetButton() && cc.currentStamina > 0 && !cc.customAction && !isAttacking; + isBlocking = inputReader.IsBlockHeld && cc.currentStamina > 0 && !cc.customAction && !isAttacking; } /// @@ -157,11 +163,13 @@ namespace Invector.vCharacterController /// public override void SprintInput() { - if (sprintInput.useInput) - { - bool canSprint = cc.useContinuousSprint ? sprintInput.GetButtonDown() : sprintInput.GetButton(); - cc.Sprint(canSprint && !isAttacking); - } + // if (sprintInput.useInput) + // { + // bool canSprint = cc.useContinuousSprint ? sprintInput.GetButtonDown() : sprintInput.GetButton(); + // cc.Sprint(canSprint && !isAttacking); + //} + if(inputReader == null) return; + cc.Sprint(inputReader.IsSprintHeld && !isAttacking); } #endregion diff --git a/Assets/Invector-3rdPersonController/Shooter/Scripts/Shooter/vShooterMeleeInput.cs b/Assets/Invector-3rdPersonController/Shooter/Scripts/Shooter/vShooterMeleeInput.cs index 17afdfe1..324db454 100644 --- a/Assets/Invector-3rdPersonController/Shooter/Scripts/Shooter/vShooterMeleeInput.cs +++ b/Assets/Invector-3rdPersonController/Shooter/Scripts/Shooter/vShooterMeleeInput.cs @@ -357,6 +357,14 @@ namespace Invector.vCharacterController } muzzlePosition = Vector3.forward * cc._capsuleCollider.radius * 2; muzzleForward = Vector3.forward; + if (inputReader != null) + { + inputReader.OnReloadEvent += () => + { + if (!isReloading) shooterManager.ReloadWeapon(); + }; + inputReader.OnSwitchSideEvent += SwitchCameraSide; + } } @@ -379,7 +387,7 @@ namespace Invector.vCharacterController // We change the Melee Attack Input for the Shooter because 'Mouse1' is the same input to Shot a Fire Weapon weakAttackInput = new GenericInput("Mouse2", "RB", "RB"); // By default it's disable because it uses the same input as the switchCameraSideInput - strafeInput.useInput = false; + // strafeInput.useInput = false; } /// @@ -666,7 +674,11 @@ namespace Invector.vCharacterController } // reset the aimTimming if you sprint while still aiming through the hipfire - if (sprintInput.GetButtonDown() && _aimTiming > 0f) + // if (sprintInput.GetButtonDown() && _aimTiming > 0f) + // { + // _aimTiming = 0f; + // } + if(inputReader.IsSprintHeld && _aimTiming > 0f) { _aimTiming = 0f; } @@ -692,8 +704,7 @@ namespace Invector.vCharacterController if (!cc.isRolling) { - isAimingByInput = (!isReloading || shooterManager.keepAimingWhenReload) && (aimInput.GetButton() || (shooterManager.alwaysAiming && CurrentActiveWeapon)) && !cc.ragdolled && !cc.customAction - || (cc.customAction && cc.isJumping); + isAimingByInput = (!isReloading || shooterManager.keepAimingWhenReload) && (inputReader.IsAimHeld || (shooterManager.alwaysAiming && CurrentActiveWeapon)) && !cc.ragdolled && !cc.customAction; } if (aimInput.GetButtonUp() && !shotInput.GetButton()) @@ -774,7 +785,8 @@ namespace Invector.vCharacterController { if (CurrentActiveWeapon || (shooterManager.CurrentWeapon && shooterManager.hipfireShot)) { - HandleShotCount(shooterManager.CurrentWeapon, shotInput.GetButton()); + // HandleShotCount(shooterManager.CurrentWeapon, shotInput.GetButton()); + HandleShotCount(shooterManager.CurrentWeapon, inputReader.IsAttackHeld); } } else if (!IsAiming) diff --git a/Assets/Scripts/Player Controller/InputReader.cs b/Assets/Scripts/Player Controller/InputReader.cs index 60a67e6f..8918a6ab 100644 --- a/Assets/Scripts/Player Controller/InputReader.cs +++ b/Assets/Scripts/Player Controller/InputReader.cs @@ -60,6 +60,10 @@ namespace OnlyScove.Scripts public virtual Vector2 ScrollInput { get; protected set; } public virtual bool IsSprintHeld { get; protected set; } public virtual bool IsAttackHeld { get; protected set; } + + + public bool IsAimHeld { get; protected set; } + public bool IsBlockHeld { get; protected set; } public void ApplyNetworkInput(Vector2 move, bool isSprint) { @@ -77,6 +81,10 @@ namespace OnlyScove.Scripts public event Action OnNextInteractEvent; public event Action OnPreviousInteractEvent; public event Action OnToggleViewEvent; + + public event Action OnReloadEvent; + public event Action OnStrongAttackEvent; + public event Action OnSwitchSideEvent; // UI Events public event Action OnToggleSettingsEvent; // Cho Ctrl+O @@ -185,5 +193,30 @@ namespace OnlyScove.Scripts OnCancelEvent?.Invoke(); } } + public void OnAim(InputAction.CallbackContext context) + { + if (context.performed) IsAimHeld = true; + if (context.canceled) IsAimHeld = false; + } + public void OnBlock(InputAction.CallbackContext context) + { + if (context.performed) IsBlockHeld = true; + if (context.canceled) IsBlockHeld = false; + } + + public void OnStrongAttack(InputAction.CallbackContext context) + { + if(context.performed) OnStrongAttackEvent?.Invoke(); + } + + public void OnReload(InputAction.CallbackContext context) + { + if (context.performed) OnReloadEvent?.Invoke(); + } + + public void OnSwitchSide(InputAction.CallbackContext context) + { + if (context.performed) OnSwitchSideEvent?.Invoke(); + } } }