🕴️

unityでキャラクターの2Dアニメーションを作成する #3 Prefab作成編

2024/02/11に公開

Unityを使って 2Dアニメーションを作ります。
備忘メモも兼ねて、記事に起こそうと思います。

→前回
https://zenn.dev/mochimochimo/articles/ff9941d1ee393b

シーンに追加してみる

はじめにインポートしたイメージをシーンにドラッグ&ドロップすると、シーン上にアセットが追加されます。

中身を見てみるとイメージが同一階層に、Boneが今まで編集してきた通りに生成されています。
このままだとちょっと都合が悪いので別途Prefabを作成します。
この時original Prefabで作成しておきます。

アニメーション作成にあたり必要なもの

今後ポチポチアニメーションを作るにあたり必要なものをまとめておきます。

  • Animator
  • sprite library
  • 各種エフェクト

それぞれを新しく作成したprefabに追加していきます。

Animator

Animatorはアニメーションの管理を行うアセットで、ここからアニメーションを実行されます。
キャラクターのステータスやアクションなどによって、イイカンジにアニメーションを実行できるように設定できます。

Animator Controller作成

アニメーションをまとめておきたいフォルダを作成しておいて、右クリックから作成できます。

Animator紐付け

アセットのベースにAnimatorコンポーネントを紐付け、そこにAnimator Controllerを設定します。

ステータスと変数

するとこのようなGUIが表示されます。

仕組みとしてはこの四角が1つの状態となり、アニメーションを1つ設定できます。
条件による状態遷移が可能で、パラメータを変化させることでアニメーションをコントロールします。

sprite library

表情のレイヤーをワンタッチで切り替えられるようにします。
sprite libraryを作成します。

sprite libraryの設定

作成したsprite libraryにImageを設定します。
適当なカテゴリー名をつけて、表情のレイヤーを追加します。

同じカテゴリーのImageをラベルによってよって切り替えることができます。

sprite resolver

表情のレイヤーの一つにsprite resolverとsprite libraryコンポーネントを追加します。
対象のカテゴリーを選択し、不要なレイヤーは非表示にします。
するとワンタッチでImageを切り替えることができます。

各種エフェクト

Animatorは配下のオブジェクトを参照でき、GUIから操作できることは大体アニメーションとして再現できます。
そのことを利用してアニメーションからパーティクルなどの各種エフェクトを実行します。

エフェクト実行用のスクリプト

アニメーションからはAnimatorと同じオブジェクトに紐づくコンポーネントであればEventとして実行できます。
下記のようなコンポーネントを用意して置くと便利です。

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Events;
public class FeedbackKicher : MonoBehaviour
{
    public UnityEvent @event;
    public UnityEvent @event2;
    public UnityEvent @event3;
    public enum eventtype
    {
        none,work,dash,junp
    }
    public void eventKick(eventtype key)
    {
        if (key == eventtype.none)
        {
            return;
        }
        switch (key)
        {
            case eventtype.none:
                return;
            case eventtype.work:
                @event.Invoke();
                break;
            case eventtype.dash:
                @event2.Invoke();
                break;
            case eventtype.junp:
                @event3.Invoke();
                break;
            default:
                break;
        }
    }
}

GUIから実行するParticleやサウンドなどを設定できます。

MMFeedback

エフェクト関連でオススメのアセットです。
https://assetstore.unity.com/packages/templates/systems/corgi-engine-2d-2-5d-platformer-26617?locale=ja-JP

2Dアクションゲームですが、付属されているMM feedbackは各種エフェクトのイベント操作がちょっと便利になります。

Discussion