Сглаживание при вращении объекта мыши - PullRequest
0 голосов
/ 26 сентября 2019

Я использую эту строку для вращения объекта с помощью мыши:

this._obj.transform.Rotate(new Vector3(0, -Input.GetAxis("Mouse X"), 0), Time.unscaledDeltaTime * this.speed);

Но я бы хотел сгладить это с некоторой задержкой, как в Sketchfab, когда вы используете мышь для вращения объекта, просто не уверенкак сделать это правильно.Я не очень хорошо знаком с кватернионами.

Может кто-нибудь дать мне совет, как мне просто подойти к этому?

1 Ответ

0 голосов
/ 26 сентября 2019

Немного сложно просто повернуть его.Вот рабочая версия того, что вы хотите:

    public Vector3 hiddenRotation;

void Start()
{
    hiddenRotation = this.transform.rotation.eulerAngles;
}

void Update()
{
    float sensitivity = 5.0f;
    //Get rotation vector
    Vector3 rot = new Vector3(0, -Input.GetAxis("Mouse X"), 0) * sensitivity;
    //Add rotation to hidden internal rotation
    hiddenRotation += rot;

    //Specify speed at which the cube rotates.
    float speed = 50.0f;
    float step = speed * Time.deltaTime;

    //Set new rotation (changing this function may allow for smoother motion, like lower step as it approaches the new rotation
    this.transform.rotation = Quaternion.RotateTowards(this.transform.rotation, Quaternion.Euler(hiddenRotation), step);

}

, которая использует скрытое вращение и получает к нему transform.rotation.

...