Unity で 2D アニメーションを作成する

Unity で 2D アニメーションを作成するには、開発者は組み込みのアニメーション ウィンドウと Unity Animator コンポーネントを使用できます。ここでは、開始するためのステップバイステップのガイドを示します。

プロジェクトのセットアップ

  • Unity を開き、create 新しい 2D プロジェクトを開くか、既存のプロジェクトを開きます。
  • 新しいプロジェクトを開始する場合は、プロジェクトのテンプレートを 2D として設定します。

スプライト アセットのインポート

  • スプライトは、スプライト エディタを使用して Unity 内に作成することも、PNG や JPEG などの外部画像ファイルからインポートすることもできます。
  • Unity 内にスプライトを作成するには、Assets メニューに移動し、Create を選択して、Sprite または Sprite Renderer を選択します。これで、スプライト アートワークを描画またはインポートできるようになります。

スプライトアニメーションの設定

  • スプライトの準備ができたら、プロジェクト ウィンドウでスプライト アセットを選択します。
  • インスペクター ウィンドウで、テクスチャ タイプが 'Sprite (2D and UI)' に設定されていることを確認します。そうでない場合は、'Sprite (2D and UI)' に変更します。
  • プロジェクト ウィンドウでスプライト アセットをクリックして、スプライト エディターで開きます。
  • スプライト エディタを使用して、アニメーションの個々の フレーム を定義します。必要に応じて、スプライトを複数のサブイメージに分割できます。エディターでは、各フレームのピボット ポイントを変更してスプライトの位置を制御することもできます。
  • スプライト エディターで加えた変更を保存します。

アニメーションウィンドウを使用してアニメーションを作成する

  • アニメーション ウィンドウを開くには、'Window -> Animation' に移動します。
  • [アニメーション] ウィンドウで [作成] ボタンをクリックして、新しいアニメーション クリップを作成します。
  • 「プロジェクト」ウィンドウでアニメーションクリップを選択すると、そのプロパティが「インスペクター」ウィンドウに表示されます。
  • インスペクター ウィンドウでは、アニメーション クリップの長さ、サンプル レート、その他のプロパティを設定できます。
  • キーフレームを作成するには、Animation ウィンドウで再生ヘッドを特定の time に移動し、Scene または Hierarchy ウィンドウでスプライトのプロパティ (位置、スケール、回転など) を変更します。
  • さまざまなタイミングでキーフレームを追加して、滑らかなアニメーションを作成します。Unity はキーフレーム間の値を自動的に補間します。

アニメーターのセットアップ

  • Scene または Hierarchy ウィンドウでスプライト オブジェクトを選択します。
  • 「インスペクター」ウィンドウで「コンポーネント の追加」ボタンをクリックし、"Animator" を検索して Animator コンポーネントをオブジェクトに追加します。
  • Animator コンポーネントの [Create] ボタンをクリックして、新しい Animator Controller アセットを作成します。
  • 新しく作成した Animator コントローラーを Animator コンポーネントのコントローラー フィールドに割り当てます。

アニメーターコントローラーの構成

  • 新しく作成した Animator Controller アセットをダブルクリックして、Animator ウィンドウで開きます。
  • Animator ウィンドウには、アニメーションの流れを表す Animator Controller グラフがあります。
  • Animator ウィンドウを右クリックし、'Create State -> From New Clip' または 'From Sprite Renderer' を選択してアニメーション ステートを作成します。
  • アニメーション ウィンドウで以前に作成したアニメーション クリップを、それぞれのアニメーション ステートにドラッグ アンド ドロップします。
  • アニメーション状態間の遷移を作成するには、状態をクリックし、矢印を別の状態にドラッグします。時間やパラメータ値、イベントなどの遷移条件を調整することが可能です。
  • ブール値、整数、トリガーなどの遷移を制御するパラメーターを追加できます。たとえば、アイドル アニメーション状態から実行中のアニメーション状態への遷移をトリガーする "IsRunning" というブール パラメーターが存在する可能性があります。

アニメーションを再生する

  • Scene または Hierarchy ウィンドウでスプライト オブジェクトを選択します。
  • 「インスペクター」ウィンドウの「アニメーター」コンポーネントで、作成したアニメーターコントローラーアセットを「コントローラー」フィールドにドラッグします。
  • [アニメーション] ウィンドウの Play ボタンを押して、アニメーションをテストおよびプレビューします。

プログラムによるアニメーションの制御

  • アニメーションをプログラムで制御するには、script から Animator コンポーネントにアクセスする必要があります。
  • スクリプトで、Animator 型の変数を作成し、'GetComponent<Animator>()' を使用して、スプライト オブジェクトにアタッチされた Animator コンポーネントへの参照を取得します。
  • その後、Animator の関数とプロパティを使用して、トランジションをトリガーしたり、パラメータ値を設定したり、アニメーションの再生を制御したりすることができます。たとえば、animator.SetBool("IsRunning", true) を呼び出すと、実行中のアニメーションがトリガーされます。
using UnityEngine;

public class AnimationController : MonoBehaviour
{
    private Animator animator;

    private void Start()
    {
        // Get a reference to the Animator component
        animator = GetComponent<Animator>();
    }

    private void Update()
    {
        // Check for input or condition to trigger animations
        if (Input.GetKeyDown(KeyCode.Space))
        {
            // Trigger a jump animation
            animator.SetTrigger("Jump");
        }

        float moveInput = Input.GetAxis("Horizontal");
        animator.SetFloat("Speed", Mathf.Abs(moveInput));

        // Check if the character is grounded
        bool isGrounded = IsGrounded();

        // Set the "IsGrounded" parameter in the Animator
        animator.SetBool("IsGrounded", isGrounded);

        if (isGrounded && Input.GetKeyDown(KeyCode.C))
        {
            // Trigger a crouch animation
            animator.SetBool("IsCrouching", true);
        }

        if (isGrounded && Input.GetKeyUp(KeyCode.C))
        {
            // Stop the crouch animation
            animator.SetBool("IsCrouching", false);
        }
    }

    private bool IsGrounded()
    {
        // Implement your own logic to check if the character is grounded
        // For example, you can use raycasting or collision detection
        // and return true if the character is touching the ground
        // and false otherwise.
        return false;
    }
}

結論

これは、組み込みツールを使用して Unity で 2D アニメーションを作成する基本的な概要です。Unity は、スプライト シート、インバース キネマティクス (IK) の使用、カスタム アニメーション behaviors のスクリプト作成など、より高度なテクニックもサポートしています。特定の要件と問題のアニメーションの複雑さに基づいて、これらのオプションを検討してください。

おすすめの記事
Unity で Ludo ゲームを作成する
Unity で Poppy のプレイタイムにインスピレーションを得たゲームを作成する
Unity でクイズ ゲームを作成する方法
Unity 用釣りゲームガイド
Unity で最初の 3D ゲームを作成する
Unity でトップダウン シューティング ゲームを構築する
Unity で新しい C# スクリプトを作成する方法