@Altere
НАЧИНАЮЩИЙ разработчик на Unity

Как сделать так, что бы параметр velocity не влиял на силу гравитации?

У меня есть код для ходьбы персонажа:
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; гравитация была, но контроллер персонажа не работал (что и логично). Помогите, как сделать нормальную скорость гравитации, при этом не изменяя принцип работы этого скрипта.
  • Вопрос задан
  • 69 просмотров
Пригласить эксперта
Ответы на вопрос 1
vabka
@vabka Куратор тега C#
Токсичный шарпист
Гравитация влияет на скорость => если ты сам меняешь скорость, то гравитация будет пропадать.
Либо используй AddForce, либо меняй только горизонтальную скорость (через операции с векторами - вспоминай школьную математику)
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы