【Unity】SimpleAnimationを使ってみた話

こんにちは！
[CYBIRD Advent Calendar 2023](https://qiita.com/advent-calendar/2023/cybird) 22日目担当の @yoooosu です。
21日目は@dave_cさんの[ボーイスカウトルール](https://qiita.com/dave_c/private/07c66ca39daccdb3d4b3)のご紹介の記事でしたね。とても興味深い内容だったので是非見てみて下さい。

# 自己紹介
2022年にサイバードへ新卒で入社いたしました@yoooosuと申します。現在はイケメンシリーズの１タイトルでサーバーサイドで開発/運用を行ったり、新規事業の開発を行ったり、子会社のゲーム開発のお手伝いをしたり、様々なことに携わっています。

# 今回の記事について
今回何について書こうかなと思った時に学生時代からUnityを使って開発を行なっているのでUnityについて書きたいなと思いました。そこで、業務でUnityを使用している際にSimpleAnimationというものがあることを知り、初めて触わったことを思い出したので今回はSimpleAnimationについて書こうと思います。今回の記事では導入〜使い方までを紹介しようと思います。

# 目次
1. SimpleAnimationとは何か
1. 今回使用するツール
1. 必要なもののインポート
1. 実際にやってみる
1. 終わりに

# 1. SimpleAnimationとは何か
SimpleAnimation とはスクリプトから簡単にアニメーションを切り替えるためのコンポーネントです。アニメーションを作る際にノードがたくさん繋がってわかりづらくなったり、2,3つだけのアニメーションを切り替えたいだけなのに AnimatorController を作成するのが面倒くさかったりした経験はありませんでしたか？ 
![スクリーンショット 2023-12-18 16.25.56.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2991293/95432cfa-8700-4526-4f2f-f49c097ebdfc.png)
↑は今回使用するSDユニティちゃんに設定されている AnimatorController です。これがどんどん複雑になっていくともう触りたくなくなりますよね。SimpleAnimation を使用すればそれが簡単に解決できます。今回は簡単な使い方を紹介しようと思います。

# 2. 今回使用するツール
今回使用するツールは以下のものになります。
・Unity(2022.3.4f1)
・VisualStudio
・MacBookPro 16インチ　2021(Monterey,12.1)

# 3. 必要なもののインポート
1. Unityでプロジェクトを作成します。
1. SimpleAnimationをダウンロードをします。
https://github.com/Unity-Technologies/SimpleAnimation
↑Githubで公開されているのでダウンロードします。ダウンロードが終わったら解凍して、
SimpleAnimation-master>Assets>SimpleAnimationComponentのフォルダを作成したプロジェクトにインポートします。
![スクリーンショット 2023-12-12 18.01.59.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2991293/3713f4a7-268f-ae8a-ea40-5fb974f82dbb.png)
1. 使うアニメーションをダウンロードします。
この記事では https://unity-chan.com/ からSDユニティちゃんのデータをダウンロードして、プロジェクトにインポートしました。

# 4. 実際にやってみる
1. 最初に空のGameObjectを作成して、インポートしてきたSDユニティちゃんのデータの中にあるUnityChan > SD_unitychan > Models > SD_unitychan_humanoid を子オブジェクトにします。
![スクリーンショット 2023-12-18 15.23.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2991293/440e3b35-790a-cd67-8299-efc50630fde4.png)
1. 次に SD_unitychan_humanoid に SimpleAnimation のコンポーネントをアタッチします。SD_unitychan_humanoid には最初から Animator のコンポーネントがアタッチされていましたが、Animator のコンポーネントがない場合は一緒にアタッチされます。![スクリーンショット 2023-12-18 15.30.58.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2991293/f61b61ae-9844-2293-91b4-85228f004402.png)
1. SimpleAnimation をアタッチできたら Animation を設定していきます。 Animation と　Animations の項目に再生したい AnimationClip を設定していきます。 Animations には AnimationClip とそれを呼び出す名前を設定します。今回は UnityChan > SD_unitychan > Animations > SD_unitychan_motion_humanoid の中にある AnimationClip を設定しました。![スクリーンショット 2023-12-18 15.42.18.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2991293/289c67e0-f823-0b78-86e5-a0ae7aa2396f.png)
1. AnimationClip の設定が終わったら再生するためのコードを書いていきます。今回は SimpleAnimationTest という名前のスクリプトを作成し、以下のコードを書きました。

```
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class SimpleAnimationTest : MonoBehaviour
{
    SimpleAnimation simpleAnimation;

    void Start()
    {
        simpleAnimation = GetComponent<SimpleAnimation>();
    }

    void Update()
    {
        // Wキーを押すと"Default"に設定しているAnimationClipが再生される
        if (Input.GetKeyDown(KeyCode.W))
        {
            simpleAnimation.Play("Default");
        }
        // Aキーを押すと"Jump"に設定しているAnimationClipが再生される
        else if (Input.GetKeyDown(KeyCode.A))
        {
            simpleAnimation.Play("Jump");
        }
        // Sキーを押すと"Damaged"に設定しているAnimationClipが再生される
        else if (Input.GetKeyDown(KeyCode.S))
        {
            simpleAnimation.Play("Damaged");
        }
    }
}

```
書けたら、SD_unitychan_humanoid にアタッチします。![スクリーンショット 2023-12-18 15.55.10.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2991293/d69025ea-8819-9df6-22e8-3cb2dd994006.png)
5. これで実行すると、走っているアニメーションが再生されます。
> Wキー → 走っているアニメーション
> Aキー → ジャンプするアニメーション
> Sキー → ダメージを受けたアニメーション

↑のキーを押すとアニメーションが切り替わるようになります。これで今回の SimpleAnimation の紹介は終わりです。
<iframe width="560" height="315" src="https://www.youtube.com/embed/LdPEbIBL2Co?si=qR5RyJaHFRALG-w6" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>

# 5. 終わりに
今回は SimpleAnimation を紹介しました。Unityでアニメーションをつけることができるものは他に DoTween などもあるので、自分に合ったものや使いどこを分けてより良いアニメーションを作成できるようになりたいですね。
明日の[CYBIRD Advent Calendar 2023](https://qiita.com/advent-calendar/2023/cybird) 23日目は@cy_ryosuke_zushiさんの[Unity(URP)：いい感じのポストエフェクト紹介](https://qiita.com/cy_ryosuke_zushi/items/0356bf621f4cf5215f21)です。今年入社の新卒メンバーの記事なので楽しみですね。