Движение с Риджиделами, игнорирующими настройки гравитации - PullRequest
0 голосов
/ 07 апреля 2020

Итак, я делаю игру от первого лица, и я реализовал этот базовый сценарий перемещения c, используя ridgididity, однако я имею дело с проблемой гравитации. Независимо от массы объекта и настроек гравитации в инспекторе объект, к которому прикреплен этот скрипт, всегда падает в медленном темпе. По MoveInput я знаю, что я постоянно устанавливаю скорость оси Y на 0, однако, если я изменяю ее на величину силы тяжести, она толкает объект через пол.

    public float MoveSpeed;
    private Rigidbody RB;

    private Vector3 MoveInput;
    private Vector3 MoveVelocity;

    private void Start()
    {
        RB = GetComponent<Rigidbody>();
    }

 private void Update()
    {
        MoveInput = new Vector3(Input.GetAxisRaw("Horizontal"), 0f, Input.GetAxisRaw("Vertical"));
        MoveVelocity = MoveInput * MoveSpeed;
    }

    private void FixedUpdate()
    {
        RB.velocity = MoveVelocity;
    }

1 Ответ

0 голосов
/ 07 апреля 2020

Таким образом, сохраняя ту же настройку для движения, но изменяя в фиксированном обновлении от простого добавления скорости к перемещению положения твердого тела, умноженного на скорость

private void Update()
{
    MoveInput = new Vector3(Input.GetAxisRaw("Horizontal"), 0, Input.GetAxisRaw("Vertical"));
    MoveVelocity = MoveInput * MoveSpeed ;
}

private void FixedUpdate()
{
    RB.MovePosition(RB.position + MoveVelocity * Time.deltaTime);
}

Я проверил это, увеличив гравитацию в инспектор и все работает

...