【Unity】画像をグルクル回転させるアニメーションを作りたい
最近行っているゲーム製作の中で、幾何学模様を組み合わせてサイバーっぽいパーツを作りました。で、友人の「これって回ったら格好よさそうじゃない?」という無責任な発言でこれを回すことになりました。
今回はこんな感じのアニメーションを作ります。
いろいろやりようはあると思いますが、色んなUIパーツに対して使えるよう今回はスクリプトで回すことにします。今回はこちらを参考に組みました(というか、ほぼそのままです)。
実際のコードはこちら。自作部分はえいやで組んだので適当です。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class RotAmimation : MonoBehaviour {
public float angle = 1;
public bool rot = true;
void LateUpdate(){
if (rot) {
transform.rotation *= Quaternion.AngleAxis (angle, Vector3.back);
} else {
transform.rotation *= Quaternion.AngleAxis (angle, Vector3.forward);
}
}
}
公式リファレンスにある通りにangleで回転角をで回転方向を決めています。つまり、angleで回転速度(角速度)を調整します。回転方向については、Vector3とあることから分かるように3次元に回転できて、それぞれ
- up:(0,1,0)
- down:(0,-1,0)
- back:(0,0,-1)
- forward:(0,0,1)
- left:(-1,0,0)
- right:(1,0,0)
のようになっています。今回は2次元平面上での回転なのでz方向の回転、すなわち
- back
- forward
を使います。とりあえず回転方向を2種類を切り替えられればいいので、時計回りならtrue、反時計回りならfalseのboolで切り替えています。あとは、これを回転させたい画像にアタッチして、インスペクターでパラメータを調整すれば完成です。
ちなみに、私の場合は描画順序がうまくいかなかったのでSortingLayerで調整しました。