Unity キャラクターの移動の作り方 ~ Animatorで実装 ~

投稿者: | 2020年11月23日

今回はクリックした位置に向かってキャラクターが左右に移動する機能をAnimatorを使って開発します。

Animationの作成

まずは、[プロジェクト]ウィンドウの右クリックメニューから「Animation」を作成します。名前は適当にXMoveにしておきます。X位置のアニメーションを下記の画像のように作成します。

XMoveアニメーションのDopesheet

移動量を一定にするため左下のCurvesボタンからアニメーションカーブを直線にします。線の左右の端を右クリックメニューのAutoで自動設定できます。

XMoveアニメーションのCurves

Animator Controllerの作成

[プロジェクト]ウィンドウの右クリックメニューから「Animation Controller」にを作成します。名前は適当にPlayerAnimatorにします。先ほど作ったXMoveアニメーションを配置してXMoveステートを作成。

Animator Controller – Parametersの設定

移動量を指定するパラメータを作成しておきます。

XMoveステートの Inspector

Multiplierプロパティに先ほど作ったMoveのプロパティを選択します。

サンプルコード

移動量を調整できるようにmoveRate変数を宣言します。

using UnityEngine;

public class PlayerMove : MonoBehaviour
{
    public Animator animator;

    [Range(0, 99)]
    public int moveRate = 80;

    void FixedUpdate()
    {
        float input = 0;
        if (Input.GetMouseButton(0))
        {
            var worldCamera = Camera.main;
            var screenPos = RectTransformUtility.WorldToScreenPoint(worldCamera, transform.position);
            input = Input.mousePosition.x - screenPos.x;
        }
        animator.SetFloat("Move", input / (100 - moveRate));
    }
}

完成!

ダウンロード

下記リンクからソースコード一式をダウンロードできます。

参考文献

[Unity マニュアル ブレンドツリー](https://docs.unity3d.com/ja/2019.4/Manual/class-BlendTree.html)
[Unity マニュアル アニメーション遷移](https://docs.unity3d.com/ja/2018.4/Manual/class-Transition.html)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)