UnityのiTweenを試してみる その5 Punch系

株式会社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>

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

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

#Punch系メソッド

Punch系メソッドは、ゆらゆらと揺らすようなアニメーションをすることができます。
一度ひっぱって元に戻る、バネのようなイメージです。

## iTween.PunchPosition

PunchPositionは指定した座標位置に一度移動後、ゆらゆらと揺れながら元の座標に戻ります。

```ruby:
iTween.PunchPosition(gameObject, iTween.Hash("x", 3f));
```

![image.gif](https://qiita-image-store.s3.amazonaws.com/0/252896/e8375f4a-5c49-711c-e34f-3334dc35fcff.gif)


値はX,Y,Zの３つを指定できます。

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

X,Y,Zは一つしか指定できないようです。以下のように複数指定するとエラーが発生します。

```ruby:
iTween.PunchPosition(gameObject, iTween.Hash("x", 3f, "x", 5f));
```

Add系のように、連続でアニメーションさせることが可能のようです。
以下のサンプルコードを試してみます。

```ruby:
iTween.PunchPosition(gameObject, iTween.Hash("x", 3f, "time", 3f));
iTween.PunchPosition(gameObject, iTween.Hash("y", 3f, "time", 3f, "delay", 0.5f));
```

![image.gif](https://qiita-image-store.s3.amazonaws.com/0/252896/7fdae0c6-ffa9-f7b1-1d5d-4619f195c2b2.gif)


## iTween.PunchPosition

PunchPositionは指定した角度に一度移動後、ゆらゆらと揺れながら元の角度に戻ります。

```ruby:
iTween.PunchRotation(gameObject, iTween.Hash("z", 360f));
```

![image.gif](https://qiita-image-store.s3.amazonaws.com/0/252896/547d5d75-79df-88ce-c166-670c5df54bce.gif)

値はX,Y,Zの３つを指定できます。

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

Add系のように、連続でアニメーションさせることが可能のようです。
以下のサンプルコードを試してみます。

```ruby:
iTween.PunchRotation(gameObject, iTween.Hash("z", 360f, "time", 3f));
iTween.PunchRotation(gameObject, iTween.Hash("y", 360f, "time", 3f, "delay", 0.5f));
```

![image.gif](https://qiita-image-store.s3.amazonaws.com/0/252896/f1527ab9-b6b2-d937-dfc2-8661142d96ea.gif)

## iTween.PunchScale

PunchScaleは指定した値に拡大・縮小後、ゆらゆらと揺れながら元の大きさに戻ります。

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

![image.gif](https://qiita-image-store.s3.amazonaws.com/0/252896/a4e45780-683f-5abd-6cda-43e6f56702f7.gif)

値はX,Y,Zの３つを指定できます。

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

Add系のように、連続でアニメーションさせることが可能のようです。
以下のサンプルコードを試してみます。

```ruby:
iTween.ShakeScale(gameObject, iTween.Hash("x", 3f, "time", 3f));
iTween.ShakeScale(gameObject, iTween.Hash("x", 3f, "y", 3f, "time", 3f, "delay", 1.5f));
```

![image.gif](https://qiita-image-store.s3.amazonaws.com/0/252896/f0b93400-9988-714c-6084-16c5c6571ba4.gif)

# まとめ
Punch系を一通り試してみました。
バネのような動きがメソッド一つで実現できました。色々な表現に使えそうです！
次回も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系](https://qiita.com/zob_by_zooa_inc/items/0632b292515c67e80b22)
[その4 Shake系](https://qiita.com/zob_by_zooa_inc/items/4cfb30d6cd12ec616918)
その5 Punch系←今ココ

---


株式会社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>

---