@Laziz768

Can not jump while walking, why?

Hello, I can't run and jump at the same time... I've been suffering for two days now, I can't figure out where the error is. Please help, any help would be appreciated.

using UnityEngine;

public class Movement : MonoBehaviour
{
  [Header("Gravity")] [SerializeField] float gravity = 9.8f;
  [SerializeField] float gravityMultiplier = 2;
  [SerializeField] float jumpHeight = 3f;
  private float _velocityY;

  [Header("Movement")] [SerializeField] float speed = 4f;
  [SerializeField] float rotationSmoothTime = 0.2f;

  private CharacterController _controller;
  private Camera _camera;

  private float _currentAngle;
  private float _currentAngleVelocity;

  private void Awake()
  {
    _controller = GetComponent<CharacterController>();
    _camera = Camera.main;
  }

  private void Update()
  {
    HandleMovement();

    HandelGravityAndJump();
  }

  private void HandleMovement()
  {
    float horizontal = Input.GetAxisRaw("Horizontal");
    float vertical = Input.GetAxisRaw("Vertical");

    Vector3 movement = new Vector3(horizontal, 0f, vertical).normalized;

    if (movement.magnitude >= 0.1f)
    {
      float targetAngle = Mathf.Atan2(movement.x, movement.z) * Mathf.Rad2Deg + _camera.transform.eulerAngles.y;
      _currentAngle = Mathf.SmoothDampAngle(_currentAngle, targetAngle, ref _currentAngleVelocity, rotationSmoothTime);
      transform.rotation = Quaternion.Euler(0f, _currentAngle, 0f);

      Vector3 rotateMovement = Quaternion.Euler(0f, targetAngle, 0f) * Vector3.forward;
      _controller.Move(rotateMovement * (speed * Time.deltaTime));
    }
  }

  private void HandelGravityAndJump()
  {
    if (_controller.isGrounded && Input.GetKeyDown(KeyCode.Space))
    {
      _velocityY = Mathf.Sqrt(jumpHeight * 2f * gravity);
    }

    _velocityY -= gravity * gravityMultiplier * Time.deltaTime;
    _controller.Move(Vector3.up * (_velocityY * Time.deltaTime));
  }
}
  • Вопрос задан
  • 100 просмотров
Пригласить эксперта
Ответы на вопрос 1
@Nesquick
Did you try to ply around a “drag” in player’s rigidbody? For example by 0.2-0.4 or smth.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы