У меня есть код для ходьбы персонажа:
using UnityEngine;
[RequireComponent(typeof(Rigidbody))]
public class Movement : MonoBehaviour
{
[SerializeField] private float speed;
[SerializeField] private Animator animator;
private float rotationSpeed;
private Rigidbody rb;
private void Start()
{
rb = GetComponent<Rigidbody>();
animator = GetComponent<Animator>();
Cursor.visible = false;
Cursor.lockState = CursorLockMode.Locked;
}
private void Update()
{
Vector3 input = new Vector3(Input.GetAxis("Horizontal"), 0, Input.GetAxis("Vertical"));
if (input.magnitude > 0.1f)
{
rotationSpeed = 20;
animator.SetBool("Walks", true);
Quaternion rotation = Quaternion.LookRotation(input);
rotation.x = 0;
rotation.z = 0;
transform.rotation = Quaternion.Lerp(transform.rotation, rotation, rotationSpeed * Time.deltaTime);
}
else
{
animator.SetBool("Walks", false);
rotationSpeed = 0;
}
rb.velocity = input * speed;
}
}
Всё работает отлично, но почему то гравитация при этом очень слабая и персонаж падает ОЧЕНЬ медленно. Когда я закоментировал строчку
rb.velocity = input * speed;
гравитация была, но контроллер персонажа не работал (что и логично). Помогите, как сделать нормальную скорость гравитации, при этом не изменяя принцип работы этого скрипта.