Quaternion が難しすぎて滑らか回転の独自実装は無理だった…
ので Update() の中で Lerp を使うことにしたけど、
Lerp の終了判定はどうするの?
※speedは適当

// Z軸正方向
transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0, 0, 0), speed * Time.deltaTime);

// Z軸負方向
transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0, 180, 0), speed * Time.deltaTime);

// X軸正方向
transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0, 90, 0), speed * Time.deltaTime);

// X軸負方向
transform.rotation = Quaternion.Lerp(transform.rotation, Quaternion.Euler(0, 270, 0), speed * Time.deltaTime);

上記の四つの処理の回転の終了判定が、それぞれ取りたい。
ちなみに以下では取れなかった。

// Z軸正方向
transform.rotation == Quaternion.Euler(0, 0, 0);

// Z軸負方向
transform.rotation == Quaternion.Euler(0, 180, 0);

// X軸正方向
transform.rotation == Quaternion.Euler(0, 90, 0);

// X軸負方向
transform.rotation == Quaternion.Euler(0, 270, 0);