もちっとメモ

もちっとメモ

もぐりのエンジニアが日々の中で試してみたことを気が向いたときに書き連ねていきます

【Unity】画像をグルクル回転させるアニメーションを作りたい

最近行っているゲーム製作の中で、幾何学模様を組み合わせてサイバーっぽいパーツを作りました。で、友人の「これって回ったら格好よさそうじゃない?」という無責任な発言でこれを回すことになりました。

今回はこんな感じのアニメーションを作ります。

f:id:T-N-Clark:20180421151712g:plain

いろいろやりようはあると思いますが、色んなUIパーツに対して使えるよう今回はスクリプトで回すことにします。今回はこちらを参考に組みました(というか、ほぼそのままです)。

tsubakit1.hateblo.jp

docs.unity3d.com

実際のコードはこちら。自作部分はえいやで組んだので適当です。

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で切り替えています。あとは、これを回転させたい画像にアタッチして、インスペクターでパラメータを調整すれば完成です。

f:id:T-N-Clark:20180421153331p:plain

ちなみに、私の場合は描画順序がうまくいかなかったのでSortingLayerで調整しました。

qiita.com