diff --git a/Assets/Scripts/FirstPersonController.cs b/Assets/Scripts/FirstPersonController.cs index 1b1a5853..ea97dc63 100644 --- a/Assets/Scripts/FirstPersonController.cs +++ b/Assets/Scripts/FirstPersonController.cs @@ -26,6 +26,11 @@ public class FirstPersonController : MonoBehaviour [SerializeField] private KeyCode crouchKey = KeyCode.C; [Header("Movement Parameters")] + [SerializeField] private float minWalkSpeed = 1.0f; + [SerializeField] private float maxWalkSpeed = 5.0f; + [SerializeField] private float walkSpeedInterval = 0.5f; + private float currentWalkSpeed; + [SerializeField] private float walkSpeed = 3.0f; [SerializeField] private float sprintSpeed = 6.0f; [SerializeField] private float crouchSpeed = 1.5f; @@ -75,6 +80,7 @@ public class FirstPersonController : MonoBehaviour defaultYPos = playerCamera.transform.localPosition.y; Cursor.lockState = CursorLockMode.Locked; Cursor.visible = false; + currentWalkSpeed = walkSpeed; } @@ -95,6 +101,7 @@ public class FirstPersonController : MonoBehaviour CanMove = true; HandleMovementInput(); HandleMouseLook(); + HandleSpeedChange(); if (canJump) HandleJump(); @@ -190,5 +197,29 @@ public class FirstPersonController : MonoBehaviour duringCrouchAnimation = false; } + private void HandleSpeedChange() + { + float scroll = Input.GetAxis("Mouse ScrollWheel"); + + if (scroll > 0) + { + // Increase walk speed if within the maximum limit + if (currentWalkSpeed < maxWalkSpeed) + { + currentWalkSpeed += walkSpeedInterval; + } + } + else if (scroll < 0) + { + // Decrease walk speed if within the minimum limit + if (currentWalkSpeed > minWalkSpeed) + { + currentWalkSpeed -= walkSpeedInterval; + } + } + + // Update the walk speed + walkSpeed = currentWalkSpeed; + } }