Добавлен спринт, изменены параметры скорости персонажа
This commit is contained in:
1 parent
ee7771acd9
commit
ff095526bd
5 files changed
+37
-7
No files matched your search
@@ -15,6 +15,7 @@ namespace Code.Gameplay.Player
|
||||
public CameraMode CameraMode; // Текущий режим камеры для адаптации поведения
|
||||
public Vector3 CameraPlanarDirection; // Направление камеры в горизонтальной плоскости
|
||||
public bool JumpPressed; // Флаг указывающий, нажата ли кнопка прыжка
|
||||
public bool SprintPressed; // Флаг указывающий, нажата ли кнопка спринта
|
||||
}
|
||||
|
||||
/*
|
||||
@@ -31,7 +32,8 @@ namespace Code.Gameplay.Player
|
||||
|
||||
[SerializeField]
|
||||
private float
|
||||
maxStableMoveSpeed = 10f, // Максимальная скорость движения по устойчивой поверхности
|
||||
maxStableMoveSpeed = 8f, // Максимальная скорость движения по устойчивой поверхности
|
||||
sprintMoveSpeed = 12f, // Максимальная скорость спринта
|
||||
stableMovementSharpness = 15f, // Резкость изменения скорости движения (чем выше - тем резче)
|
||||
orientationSharpness = 10f, // Резкость изменения вращения персонажа (чем выше - тем резче)
|
||||
jumpSpeed = 10f; // Скорость прыжка
|
||||
@@ -48,10 +50,10 @@ namespace Code.Gameplay.Player
|
||||
// Вращение камеры в FirstPerson режиме для синхронизации (только горизонтальная компонента)
|
||||
private Quaternion _firstPersonCameraRotation;
|
||||
|
||||
|
||||
private bool
|
||||
_shouldApplyCameraRotation, // Флаг указывающий, что нужно применить вращение камеры к персонажу
|
||||
_jumpRequested; // Флаг указывающий, что был запрошен прыжок
|
||||
_shouldApplyCameraRotation, // Флаг указывающий, что нужно применить вращение камеры к персонажу
|
||||
_jumpRequested, // Флаг указывающий, что был запрошен прыжок
|
||||
_isSprinting; // Флаг указывающий, что активен режим спринта
|
||||
|
||||
// Инициализация контроллера
|
||||
private void Start()
|
||||
@@ -65,6 +67,9 @@ namespace Code.Gameplay.Player
|
||||
{
|
||||
// Сохраняем текущий режим камеры
|
||||
_currentCameraMode = inputs.CameraMode;
|
||||
|
||||
// Обработка спринта
|
||||
_isSprinting = inputs is { SprintPressed: true, MoveAxisForward: > 0.1f }; // Спринт только при движении вперёд
|
||||
|
||||
// Нормализация вектора движения и ограничение его величины до 1
|
||||
var moveInputVector =
|
||||
@@ -209,8 +214,9 @@ namespace Code.Gameplay.Player
|
||||
var reorientedInput = Vector3.Cross(effectiveGroundNormal, inputRight).normalized *
|
||||
_moveInputVector.magnitude;
|
||||
|
||||
// Расчет целевой скорости движения с учетом ограничения максимальной скорости
|
||||
var targetMovementVelocity = reorientedInput * maxStableMoveSpeed;
|
||||
// Расчет целевой скорости движения с учетом ограничения максимальной скорости и спринта
|
||||
var targetSpeed = _isSprinting ? sprintMoveSpeed : maxStableMoveSpeed;
|
||||
var targetMovementVelocity = reorientedInput * targetSpeed;
|
||||
|
||||
// Плавная интерполяция текущей скорости к целевой с экспоненциальным сглаживанием
|
||||
currentVelocity = Vector3.Lerp(
|
||||
|
||||
@@ -58,6 +58,7 @@ public class Player : MonoBehaviour
|
||||
inputs.MoveAxisForward = moveInput.y; // Vertical ось (W/S или Up/Down)
|
||||
inputs.MoveAxisRight = moveInput.x; // Horizontal ось (A/D или Left/Right)
|
||||
inputs.JumpPressed = _inputService.JumpPressed; // Прыжки (Space)
|
||||
inputs.SprintPressed = _inputService.SprintPressed; // Спринт (Shift)
|
||||
|
||||
// Передаем информацию о камере для адаптивного поведения
|
||||
inputs.CameraRotation = playerCamera.transform.rotation;
|
||||
|
||||
@@ -14,6 +14,7 @@ namespace Code.Input
|
||||
// Для управления движением персонажа
|
||||
Vector2 MoveInput { get; }
|
||||
bool JumpPressed { get; }
|
||||
bool SprintPressed { get; }
|
||||
|
||||
// Для переключения режима камеры
|
||||
bool ToggleCameraModePressed { get; }
|
||||
|
||||
@@ -13,6 +13,7 @@ namespace Code.Input
|
||||
public float ZoomInput { get; private set; }
|
||||
public Vector2 MoveInput { get; private set; }
|
||||
public bool JumpPressed { get; private set; }
|
||||
public bool SprintPressed { get; private set; }
|
||||
public bool ToggleCameraModePressed { get; private set; }
|
||||
|
||||
public InputService(InputActionAsset inputActionAsset)
|
||||
@@ -65,6 +66,14 @@ namespace Code.Input
|
||||
jumpAction.canceled += OnJumpCanceled;
|
||||
}
|
||||
|
||||
// Обработка спринта (персонаж)
|
||||
var sprintAction = gameplayMap.FindAction("Sprint");
|
||||
if (sprintAction != null)
|
||||
{
|
||||
sprintAction.performed += OnSprintPerformed;
|
||||
sprintAction.canceled += OnSprintCanceled;
|
||||
}
|
||||
|
||||
// Обработка переключения режима камеры
|
||||
var toggleCameraModeAction = gameplayMap.FindAction("ToggleCameraMode");
|
||||
if (toggleCameraModeAction != null)
|
||||
@@ -113,6 +122,16 @@ namespace Code.Input
|
||||
{
|
||||
JumpPressed = false;
|
||||
}
|
||||
|
||||
private void OnSprintPerformed(InputAction.CallbackContext context)
|
||||
{
|
||||
SprintPressed = true;
|
||||
}
|
||||
|
||||
private void OnSprintCanceled(InputAction.CallbackContext context)
|
||||
{
|
||||
SprintPressed = false;
|
||||
}
|
||||
|
||||
private void OnToggleCameraModePerformed(InputAction.CallbackContext context)
|
||||
{
|
||||
@@ -149,6 +168,9 @@ namespace Code.Input
|
||||
gameplayMap.FindAction("Jump").performed -= OnJumpPerformed;
|
||||
gameplayMap.FindAction("Jump").canceled -= OnJumpCanceled;
|
||||
|
||||
gameplayMap.FindAction("Sprint").performed -= OnSprintPerformed;
|
||||
gameplayMap.FindAction("Sprint").canceled -= OnSprintCanceled;
|
||||
|
||||
gameplayMap.FindAction("ToggleCameraMode").performed -= OnToggleCameraModePerformed;
|
||||
gameplayMap.FindAction("ToggleCameraMode").canceled -= OnToggleCameraModeCanceled;
|
||||
}
|
||||
|
||||
@@ -362,7 +362,6 @@ MonoBehaviour:
|
||||
minDistance: 3
|
||||
maxDistance: 10
|
||||
distanceMovementSpeed: 5
|
||||
distanceMovementSharpness: 100
|
||||
rotationSpeed: 0.3
|
||||
rotationSharpness: 100
|
||||
followSharpness: 100
|
||||
@@ -987,6 +986,7 @@ MonoBehaviour:
|
||||
m_EditorClassIdentifier: Assembly-CSharp::Code.Gameplay.Player.CharacterController
|
||||
motor: {fileID: 1696686256}
|
||||
maxStableMoveSpeed: 10
|
||||
sprintMoveSpeed: 15
|
||||
stableMovementSharpness: 15
|
||||
orientationSharpness: 10
|
||||
jumpSpeed: 10
|
||||
|
||||
Reference in new issue
Block a user