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