Unity, повернуть объект по оси и вернуться в исходную точку в том же направлении

Я хочу вращать объект по оси Y с постоянной скоростью. Когда я остановился, я хочу вернуться к Quaternion.identity в том же направлении.

public bool spin;
public float speed;

private void Update() {
    if (spin) {
        transform.Rotate (-Vector3.up, Time.deltaTime * speed, Space.World);
    } else if (transform.rotaion != Quaternion.identity) {
        transform.rotation = Quaternion.RotateTowards (transform.rotation, Quaternion.identity, Time.deltaTime * speed);
    }
}

Это отлично работает, но вращается в обратном направлении. Как заставить его продолжать вращаться в исходном направлении к Quaternion.identity?


person user1105430    schedule 12.05.2018    source источник


Ответы (1)


Это отлично работает, но вращается в обратном направлении.

RotateTowards пойдет по кратчайшему пути к своей цели - в любом направлении.

Как заставить его продолжать вращаться в исходном направлении к Quaternion.identity?

Обратное направление при повороте на 180 градусов (или наполовину):

var dir = transform.eulerAngles.y < 180f ? 1f : -1f;
Quaternion.RotateTowards(rotation, Quaternion.identity, Time.deltaTime * speed * dir);
person Lece    schedule 12.05.2018