Почему Vector3.Lerp не является гладким? - PullRequest
0 голосов
/ 17 апреля 2020

Я пытаюсь сгладить углы euler моего проигрывателя от третьего лица, но на самом деле это не работает. Я использую "Vector3.Lerp", но ничего не происходит

Буду рад, если кто-нибудь сможет мне помочь: D


public float speed = 5f;
public Transform relativeTo;
private Rigidbody rb;

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

void Update()
{
    Move();
}

private void Move()
{
    float vertical = Input.GetAxis("Vertical");
    float horizontal = Input.GetAxis("Horizontal");

    if (vertical != 0 || horizontal != 0)
        Rotate();

    Vector3 movement = new Vector3(horizontal, 0, vertical) * speed * Time.deltaTime;
    transform.Translate(movement);
}

private void Rotate()
{
    Vector3 desiredRotation = new Vector3(0, relativeTo.eulerAngles.y, 0);
    this.transform.eulerAngles = Vector3.Lerp(transform.eulerAngles, desiredRotation, 1f);
}

1 Ответ

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

Третий параметр функции Lerp может установить плавность изменения. Измените свою последнюю строку на это:

this.transform.eulerAngles = Vector3.Lerp(transform.eulerAngles, desiredRotation, Time.deltaTime * speed);

Определите переменную типа float speed и задайте для нее значение (я думаю, 2 или 2,5 - это хорошо)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...