Почему Unity преобразует мою скорость вперед в горизонтальную скорость? [закрыто] ⇐ C#
Почему Unity преобразует мою скорость вперед в горизонтальную скорость? [закрыто]
Контроллер персонажа начинает летать горизонтально, когда я отменяю скорость вперед, совершая прыжок назад
Пытался запрограммировать управление воздухом для встроенного контроллера персонажа, все работало нормально, пока я не попытался отменить движение в воздухе, из-за чего я отклонился в сторону.
Если это не объяснило, вот пример: я прыгаю вперед, затем пытаюсь отойти назад, и внезапно я лечу вправо. Пытался отладить вектор движения, а мои _movement.x и _movement.z просто меняются местами.
#Обновить попробовал пойти вбок, а затем отменить движение, противодействуя ему, возникает та же проблема, но наоборот, моя горизонтальная скорость превращается в скорость вперед
#Upd2 Еще больше отлажено, оказывается, что нормализация вектора превращает небольшое количество бокового движения в горизонтальное движение с максимальной скоростью примерно через 10-15 кадров после отмены движения. (Журнал прикреплен в конце), не знаю, как это исправить
Вот код
Private void CalculateMoveDirection() { если (CanMove) { если (Controller.isGrounded) { _movement = PlayerInput.Horizontal * Transform.right + PlayerInput.Vertical * Transform.forward; _movement = _movement.normalized * _currentSpeed * Time.deltaTime; } еще { _movement = новый Vector3(_savedVelocity.x, 0f, _savedVelocity.z) * Time.deltaTime; Debug.Log($"[SET TO SAVED VEL] {_movement}"); если(Input.GetKeyDown(KeyCode.S)) { Debug.Log("НАЗАД НАЖАТ"); } Debug.Log($"[INPUT MOVEMENT] {((PlayerInput.Horizontal * Transform.right + PlayerInput.Vertical * Transform.forward) * _airControl) * _currentSpeed * Time.deltaTime}"); _movement += ((PlayerInput.Horizontal * Transform.right + PlayerInput.Vertical * Transform.forward) * _airControl) * _currentSpeed * Time.deltaTime; Debug.Log($"[ДОБАВЛЕНО ВХОДНОЕ ДВИЖЕНИЕ] {_movement}"); _movement = _movement.normalized * _currentSpeed * Time.deltaTime; Debug.Log($"[НОРМАЛИЗИРОВАНО] {_movement}"); } } еще { _movement = Vector3.ноль; } если (Controller.isGrounded) { _yAxisVelocity = -0,5f; } } Журналы отладки
Контроллер персонажа начинает летать горизонтально, когда я отменяю скорость вперед, совершая прыжок назад
Пытался запрограммировать управление воздухом для встроенного контроллера персонажа, все работало нормально, пока я не попытался отменить движение в воздухе, из-за чего я отклонился в сторону.
Если это не объяснило, вот пример: я прыгаю вперед, затем пытаюсь отойти назад, и внезапно я лечу вправо. Пытался отладить вектор движения, а мои _movement.x и _movement.z просто меняются местами.
#Обновить попробовал пойти вбок, а затем отменить движение, противодействуя ему, возникает та же проблема, но наоборот, моя горизонтальная скорость превращается в скорость вперед
#Upd2 Еще больше отлажено, оказывается, что нормализация вектора превращает небольшое количество бокового движения в горизонтальное движение с максимальной скоростью примерно через 10-15 кадров после отмены движения. (Журнал прикреплен в конце), не знаю, как это исправить
Вот код
Private void CalculateMoveDirection() { если (CanMove) { если (Controller.isGrounded) { _movement = PlayerInput.Horizontal * Transform.right + PlayerInput.Vertical * Transform.forward; _movement = _movement.normalized * _currentSpeed * Time.deltaTime; } еще { _movement = новый Vector3(_savedVelocity.x, 0f, _savedVelocity.z) * Time.deltaTime; Debug.Log($"[SET TO SAVED VEL] {_movement}"); если(Input.GetKeyDown(KeyCode.S)) { Debug.Log("НАЗАД НАЖАТ"); } Debug.Log($"[INPUT MOVEMENT] {((PlayerInput.Horizontal * Transform.right + PlayerInput.Vertical * Transform.forward) * _airControl) * _currentSpeed * Time.deltaTime}"); _movement += ((PlayerInput.Horizontal * Transform.right + PlayerInput.Vertical * Transform.forward) * _airControl) * _currentSpeed * Time.deltaTime; Debug.Log($"[ДОБАВЛЕНО ВХОДНОЕ ДВИЖЕНИЕ] {_movement}"); _movement = _movement.normalized * _currentSpeed * Time.deltaTime; Debug.Log($"[НОРМАЛИЗИРОВАНО] {_movement}"); } } еще { _movement = Vector3.ноль; } если (Controller.isGrounded) { _yAxisVelocity = -0,5f; } } Журналы отладки
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
В Spring Security исключения передаются вперед по цепочке фильтров вперед или назад?
Anonymous » » в форуме JAVA - 0 Ответы
- 27 Просмотры
-
Последнее сообщение Anonymous
-