株式会社ZOOA(ゾーア)のzobです。[@twitter]
弊社はフリーランスや、個人事業主、給料UPを目指している方向けに高単価求人案件配信サイト(ZOB)も運営しておりますので是非ご覧ください!
前回に引き続き、iTweenを色々と試してみました。
今回はRotate系のメソッドを試してみました。
検証で使用したUnityバージョンは以下の通りです。
Unity2018.1.0f2
#iTween.RotateTo
RotateToは指定した回転座標位置にオブジェクトを回転アニメーションさせます。
使い方は以下の通りです
iTween.RotateTo(gameObject, iTween.Hash("x", 180f));
上記の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));
ただRotateFromは、値が以下のように90fを超えると挙動がかなり怪しくなります。
iTween.RotateFrom(gameObject, iTween.Hash("x", 91f));
予想とは違う回転をするかもしれないので、90f以下に抑えるのがいいかもしれません。
#iTween.RotateUpdate
RotateUpdateはRotateToと同じ、指定した回転座標位置にオブジェクトを回転アニメーションさせます。
MoveUpdateと同じ、Updateで呼ばないと回転アニメーションされません。
public class iTweenTest: MonoBehaviour
{
void Update()
{
iTween.RotateUpdate(gameObject, iTween.Hash("rotation", new Vector3(90f, 0f, 0f)));
}
}
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));
#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));
途中から回転方向が変わりました。
MoveAddと似たような使い方ができますね。
まとめ
Rotate系を色々と試してみました。たった一行で回転アニメーションができるのは素晴らしいですね。
次回もiTweenの検証結果を書いていきます!
UnityのiTweenを試してみる
その1 Move系
その2 Rotate系←今ココ
その3 Scale系
その4 Shake系
その5 Punch系
株式会社ZOOA(ゾーア)
弊社はフリーランスや、個人事業主に特化したSES案件共有サイト(ZOB)も運営しておりますので給料UPを目指してる方は是非ご覧ください!