4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

UnityのiTweenを試してみる その2 Rotate系

Last updated at Posted at 2018-05-16

株式会社ZOOA(ゾーア)のzobです。[@twitter]

弊社はフリーランスや、個人事業主、給料UPを目指している方向けに高単価求人案件配信サイト(ZOB)も運営しておりますので是非ご覧ください!

前回に引き続き、iTweenを色々と試してみました。

iTween

今回はRotate系のメソッドを試してみました。

検証で使用したUnityバージョンは以下の通りです。
Unity2018.1.0f2

#iTween.RotateTo

RotateToは指定した回転座標位置にオブジェクトを回転アニメーションさせます。
使い方は以下の通りです

iTween.RotateTo(gameObject, iTween.Hash("x", 180f));

image.gif

上記のGifはアニメーションの様子をわかりやすくするため、以下の通り5秒の時間指定があります。

iTween.RotateTo(gameObject, iTween.Hash("x", 180f, "time", 5f));

感覚的にはMoveToと同じように使えそうです!

iTween.RotateTo(gameObject, iTween.Hash("x", 180f, "y", 180f));
iTween.RotateTo(gameObject, iTween.Hash("x", 180f, "z", 180f));
iTween.RotateTo(gameObject, iTween.Hash("y", 180f, "z", 180f));

回転軸3つを指定することも可能です!

iTween.RotateTo(gameObject, iTween.Hash("x", 180f, "y", 180f, "z", 180f));

以下のように、Hashで同じ座標を2回以上指定すると動かない(エラーが出る)ので注意が必要です。

iTween.RotateTo(gameObject, iTween.Hash("z", 180f, "z", -90f));

##RotateToで指定できる値について

大雑把にまとめた、RotateToで使用できる値は以下の通りです。

備考
0f~180f
-180f~0f
0f~360f 180f~360fは-180f~0fと同じ動作
-360f~0f -360f~-180fは0f~180fと同じ動作
360f~540f 0f~180fと同じ動作
-540f~-360f -180f~0fと同じ動作
540f~720f 180度より先へ自然に回転させるためには540f以上を指定する必要がある。
一回転させるには720fを指定する必要がある
-720f~-540f 180度より先へ自然に回転させるためには-540f以下を指定する必要がある。
一回転させるには-720fを指定する必要がある
720fより上 (値/360-1)回転+余り
-720fより下 (値/360+1)回転+余り

#iTween.RotateFrom

RotateFromは指定した回転座標位置から、元の回転座標に回転アニメーションさせます。
使い方は以下の通りです。

iTween.RotateFrom(gameObject, iTween.Hash("x", 75f));

image.gif

ただRotateFromは、値が以下のように90fを超えると挙動がかなり怪しくなります。

iTween.RotateFrom(gameObject, iTween.Hash("x", 91f));

image.gif

予想とは違う回転をするかもしれないので、90f以下に抑えるのがいいかもしれません。

#iTween.RotateUpdate

RotateUpdateはRotateToと同じ、指定した回転座標位置にオブジェクトを回転アニメーションさせます。
MoveUpdateと同じ、Updateで呼ばないと回転アニメーションされません。

iTweenTest.cs
public class iTweenTest: MonoBehaviour
{
	void Update()
    {
        iTween.RotateUpdate(gameObject, iTween.Hash("rotation", new Vector3(90f, 0f, 0f)));
    }
    
}

image.gif

RotateUpdateでは、Hashに**rotation(Vecter3)**を使用します。

iTween.RotateUpdate(gameObject, iTween.Hash("rotation", new Vector3(90f, 0f, 0f)));

以下のように、X、Y、Z指定では回転しないので注意が必要です。

iTween.RotateUpdate(gameObject, iTween.Hash("x", 180f, "y", 180f, "z", 180f));

また、RotateFromと同じように値が90fを超えると挙動がかなり怪しくなります。

iTween.RotateUpdate(gameObject, iTween.Hash("rotation", new Vector3(91f, 0f, 0f)));

RotateUpdateで90fを超える値が入る場合は注意が必要のようです。

RotateUpdateはMoveUpdateと同じように、マウス座標やタッチした座標に回転させる等、動的に座標が変わる時に使うと便利です。

#iTween.RotateBy

RotateByは現在の回転軸の値から、指定した値を加算して回転アニメーションさせます。
各回転軸の角加速度を指定している、という感じでしょうか。

iTween.RotateBy(gameObject, iTween.Hash("x", 180f));

image.gif

#iTween.RotateAdd

RotateAddはRotateByと同じく、現在の回転軸の値から、指定した値を加算して回転させます。

iTween.RotateAdd(gameObject, iTween.Hash("x", 180f));

Addが付いている通り、RotateAddは他の回転アニメーション実行中でも利用可能です。
わかりやすい例として、以下のスクリプトを試してみましょう。

iTween.RotateBy(gameObject, iTween.Hash("x", 1f, "time", 5f));
iTween.RotateAdd(gameObject, iTween.Hash("y", 90f, "z", 90f, "time", 2f, "delay", 0.5f));

image.gif

途中から回転方向が変わりました。
MoveAddと似たような使い方ができますね。

まとめ

Rotate系を色々と試してみました。たった一行で回転アニメーションができるのは素晴らしいですね。
次回もiTweenの検証結果を書いていきます!

・技術検証協力 荻野雄季(Twitter, Qiita)


UnityのiTweenを試してみる
その1 Move系
その2 Rotate系←今ココ
その3 Scale系
その4 Shake系
その5 Punch系


株式会社ZOOA(ゾーア)
弊社はフリーランスや、個人事業主に特化したSES案件共有サイト(ZOB)も運営しておりますので給料UPを目指してる方は是非ご覧ください!


4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?