もちっとメモ

もちっとメモ

管理人のホームページで書ききれていない調べ物のメモページです

【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