Unity:とりあえずプレイヤーを真っすぐアニメ付きで歩かせる

Unity

3Dゲームなどで、プレイヤーにまずは真っすぐにアニメ付きで歩いてもらう方法を紹介します。

イメージ

今回使っているアセットは、「Free Voxel Girl」という無料アセットですが、基本は一緒なので色々なアセットに応用がきくと思います。

シーンを準備する

とりあえずこんなシーンを作りました。(Terrainを使わずともPlaneなどで床を作ってもOKです)

プレイヤーにしたいキャラをドラッグ&ドロップで配置します。
Free Voxel Girlアセットの場合、フォルダ内にあるどの女の子キャラでもOKです。

シーンに配置したキャラの名前が〇〇〇Prefabなどと分かりにくいので、名前を「Player」に変更しておきます。

プレイヤーに歩くアニメを設定する

まずはアニメーション部分だけ設定します。

Assetsウインドウの何もない所で、右クリック > Create > Animator Controller を選択。

名前を「PlayerAnimation」とします。

キャラクタのアセットには大抵「歩く」とか「ジャンプ」「アイドル」(何もしない状態)などのアニメーションが同胞されています。

Free Voxel Girlにも「歩く」アニメーションが入っていますので、これを利用します。

アニメーションの設定について基本を知りたい方は以下をご覧ください。

PlayerAnimationをダブルクリックしてAnimatorタブを開きます。
Animatorタブで 右クリック > Create State > Empty を選択。

Inspectorタブで名前をWalkに変更します。

Motion項目の◎をクリック。

表示されたSelect Motionウインドウから「FreeVoxelGirl-walk」を選択してダブルクリック。

作成できたPlayerAnimationをHierarchyウインドウのPlayerドラッグ&ドロップしてアタッチします。

うまくアタッチできれば、PlayerのInspectorウインドウのAnimator>Controller項目にPlayerAnimationが設定されているはずです。

これで「歩く」アニメが設定されました。
シーンに実行時の視点を合わせて(分からない方は→こちら)から、一度実行確認します。

プレイヤーを前に進ませる

歩いているアニメーションが設定できたので、あとはプレイヤーを前に進ませればそれらしく見えるはずです。

地面との当たり判定を設定しておく

プレイヤーのY座標が変化しないのであれば、問題ないですが、地形の起伏にそって移動させるには当たり判定が必須です。

プレイヤーにRigidbodyを追加します。

Playerが選択されている状態で、InspectorウインドウのAdd Componentボタンをクリックします。

Phisics > Rigidbody を追加します。

Rigidbodyが追加されたら、InspectorウインドウでConstraintsを開き、Freeze Rotation項目のXYZを全てチェックしてください。(これはキャラが変な方向に回転しないための設定です)

当たり判定のコライダーを追加します。

PlayerのAdd Componentボタンから Physics > Capsule Collider を追加します。

下の画像のようにコライダー(緑の枠線がキャラとずれていたりする場合があります。

FreeVoxelGirlのキャラの場合、InspectorウインドウのCapsule ColliderのCenter項目のYの値0.5とすればキャラサイズと一致します。(Heightは1のままで大丈夫です)

この時点で実行しても先ほどと同じでムーンウォーク(?)するだけです。

プレイヤーを前に進ませるイメージ

プレイヤーを前に進ませるには、プレイヤーの現在位置(transform.position)の値をキャラの進行方向(transform.forward)に向かって増分することになります。

C#スクリプトで表すとこんな感じです。

// 前に移動する
transform.position += transform.forward * speed * Time.deltaTime;

transform.positionが現在位置、transform.forwardが向いている方向へのベクトル、上記変数speedは、進む速さです。実際には5.0などの実数型の値が入ります。

C#スクリプトを作ってプレイヤーを前に進ませる

では、実際にスクリプトを作っていきます。

Assetsウインドウで 右クリック > Create > C# Script を選択。

名前をPlayerControlとします。

PlayerControlをダブルクリックして、VisualStudioを起動し、以下スクリプトのハイライト部分を入力してください。

PlayerControl

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

public class PlayerControl : MonoBehaviour
{
    // 移動スピード
    public float speed;

    // Start is called before the first frame update
    void Start()
    {
        
    }

    // Update is called once per frame
    void Update()
    {
        // 前に移動する
        transform.position += transform.forward * speed * Time.deltaTime;
    }
}

作成したPlayerControlをHierarchyウインドウのPlayerにアタッチします。

アタッチ後、InspectorウインドウのSpeed項目に1を入力します。

実行してプレイヤーがゆっくりと前に歩けば成功です。

アニメと歩く速度の調整

アニメーションに合わせて歩く速度を調整してみます。

試しに早歩きっぽくしてみます。

PlayerAnimationをダブルクリックしてAnimatorを開きます。
Walkを選択するとSpeedという項目があります。これがアニメーションスピードです。3にしてみます。

次に実際に移動する速度です。
HierarchyウインドウのPlayerを選択して、InspectorウインドウにあるPlayerControlSpeed2とします。

実行してみます。

早歩きっぽくなったでしょうか?
思ったような歩きになるように調整してみてください。

以上、プレイヤーにまずは真っすぐにアニメ付きで歩いてもらう方法でした。

コメント

タイトルとURLをコピーしました