UnityのiTweenを試してみる その3 Scale系

株式会社ZOOA(ゾーア)のzobです。[<a href="https://twitter.com/ZOB_By_Zooa_Inc">@twitter<a>]<a href="https://zob.zooa.co.jp/?utm_source=qiita&utm_medium=social">
<img src=https://qiita-image-store.s3.amazonaws.com/0/252896/fda6f773-e8f8-f220-04a0-85cdbef56201.jpeg "logo.png">
弊社はフリーランスや、個人事業主、給料UPを目指している方向けに高単価求人案件配信サイト(ZOB)も運営しておりますので是非ご覧ください!
</a>
[前回](https://qiita.com/zob_by_zooa_inc/items/cc5dba551a0470475b5e)に引き続き、iTweenを色々と試してみました。

<a href="https://www.assetstore.unity3d.com/#!/content/84?aid=1101lIAt"><img src="https://api.assetstore.unity3d.com/affiliate/embed/package/84/icon" alt="iTween" width="128" height="128" /></a>

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

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

#iTween.ScaleTo

ScaleToは**指定した値まで拡大・縮小アニメーション**を行います。
使い方は以下の通りです

```ruby:
iTween.ScaleTo(gameObject, iTween.Hash("x", 10f));
```
![image.gif](https://qiita-image-store.s3.amazonaws.com/0/252896/3c67b2d2-4390-ae99-a3be-19c4d2415254.gif)

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

```ruby:
iTween.ScaleTo(gameObject, iTween.Hash("x", 10f, "time", 5f));
```

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

```ruby:
iTween.ScaleTo(gameObject, iTween.Hash("x", 10f, "y", 10f));
```

```ruby:
iTween.ScaleTo(gameObject, iTween.Hash("x", 10f, "z", 10f));
```

```ruby:
iTween.ScaleTo(gameObject, iTween.Hash("y", 10f, "z", 10f));
```

Scaleを３つ指定することもできます！

```ruby:
iTween.ScaleTo(gameObject, iTween.Hash("x", 10f, "y", 10f, "z", 10f));
```

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

```ruby:
iTween.ScaleTo(gameObject, iTween.Hash("z", 10f, "z", -10f));
```

#iTween.ScaleFrom

ScaleFromは**指定した値から、元の値に拡大・縮小アニメーション**させます。
使い方は以下の通りです。

```ruby:
iTween.ScaleFrom(gameObject, iTween.Hash("x", 10f);
```
![image.gif](https://qiita-image-store.s3.amazonaws.com/0/252896/be59e5ed-96fd-320f-9bc5-d38b3335ce6b.gif)

#iTween.ScaleUpdate

ScaleUpdateはScaleToと同じ、**指定した値に拡大・縮小アニメーション**させます。

```ruby:
iTween.ScaleUpdate(gameObject, iTween.Hash("x", 10f);
```

MoveUpdate、RotateUpdateと同じ、**Update**で呼ばないと拡大・縮小アニメーションされません。

```ruby:iTweenTest.cs
public class iTweenTest: MonoBehaviour
{
	void Update()
    {
        iTween.ScaleUpdate(gameObject, iTween.Hash(""x", 10f));
    }
    
}
```

ScaleUpdateはUIのスクローラー等でオブジェクトの拡大縮小を動的に行いたいと使うと便利です。

#iTween.ScaleBy

ScaleByは**現在の値から、指定した値を乗算して拡大・縮小アニメーション**させます。

```ruby:
iTween.ScaleBy(gameObject, iTween.Hash("x", 10f);
```
![image.gif](https://qiita-image-store.s3.amazonaws.com/0/252896/39c2d80f-b2f9-5bfa-271e-df7deb8cd5a9.gif)

ScaleByは元のScaleの値×指定したScaleの値で拡大・縮小アニメーションの最大値を決めているようです。

以下のように2fを初期値として入れている場合、20fまで拡大アニメーションが走るため注意が必要です。

![image.gif](https://qiita-image-store.s3.amazonaws.com/0/252896/d47610b6-fede-a673-7a94-527f448e0c5f.gif)

#iTween.ScaleAdd

ScaleAddは少々特殊な動作をします。
ScaleAddを以下の通り**単体で呼び出した場合**は、**現在のオブジェクトのScale値＋ScaleAddで設定した値**の分だけ拡大・縮小アニメーションを行います。

```ruby:
iTween.ScaleAdd(gameObject, iTween.Hash("x", 10f, "time", 5f));
```

![image.gif](https://qiita-image-store.s3.amazonaws.com/0/252896/6d650d42-b810-6405-6b45-b13f3163f7a7.gif)

Addが付いている通り、ScaleAddは**他の拡大・縮小アアニメーション実行中でも利用可能**でが、Scale系のアニメーションが再生されている場合は、一度拡大・縮小アニメーションがストップ後、**ストップ時点でのオブジェクトのScale値＋ScaleAddで設定した値**の分だけ拡大・縮小アニメーションを行います。

説明だけだと分かりにくいと思うので、以下のサンプルコードで動作を試します。

```ruby:
iTween.ScaleTo(gameObject, iTween.Hash("x", 10f, "time", 5f));
iTween.ScaleAdd(gameObject, iTween.Hash("y", 10f, "time", 5f, "delay", 0.5f));
```

![image.gif](https://qiita-image-store.s3.amazonaws.com/0/252896/13993e22-cedf-2ca3-30a1-3d6654bc82bc.gif)

結果は上記の通り、ScaleToによりXが10fになる前に拡大・縮小アニメーションが止まり、次のScaleAddでY方向にScaleされました。

# まとめ
Scale系を一通り試してみました。拡大・縮小アニメーションがこんなにも簡単にできるのはいいですね。
他にPunchScale、ShakeScaleがありますが、これは後日検証して記事に書きます。

次回もiTweenの検証結果を書いていきます！

・技術検証協力　荻野雄季([Twitter](https://twitter.com/YuukiOgino), [Qiita](https://qiita.com/YuukiOgino))

---

**UnityのiTweenを試してみる** 
[その1 Move系](https://qiita.com/zob_by_zooa_inc/items/cbe68726a158cb2166e5)
[その2 Rotate系](https://qiita.com/zob_by_zooa_inc/items/cc5dba551a0470475b5e)
その3 Scale系←今ココ
[その4 Shake系](https://qiita.com/zob_by_zooa_inc/items/4cfb30d6cd12ec616918)
[その5 Punch系](https://qiita.com/zob_by_zooa_inc/items/c6723e5124955ba0224a)


---


株式会社ZOOA(ゾーア)
弊社はフリーランスや、個人事業主に特化したSES案件共有サイト(<a href="https://zob.zooa.co.jp/?utm_source=qiita&utm_medium=social">ZOB</a>)も運営しておりますので給料UPを目指している方は是非こちらもご覧ください!

<div style="vertical-align:middle;">
<a href="https://zob.zooa.co.jp/?utm_source=qiita&utm_medium=social">
<img src=https://qiita-image-store.s3.amazonaws.com/0/252896/387a8320-3b5c-add3-d0e6-7c3e9933b504.png "logo.png">
</a>
</div>

---