【Unity】初心者でもできる!3DAnimation

FantasyChessRPGCharacter Unity

3DのキャラクターをAnimationできるようにします

Unity初心者の方が、Asset Storeで3Dのキャラクターをダウンロードするとどうやって使ったらいいのか分からないと思います。そんな方にどう使うのか解説していきます。

Assets Storeから3Dのキャラクターをダウンロード

Assets Storeでダウンロードしたキャラクターをアニメーションさせていきます。

今回は、Fantasy Chess RPG Characterをダウンロードします。

Importします。

Sceneを追加

Assets→Create→Scene

Scene名はTestSceneとしておきます。

Sceneにキャラクターを追加

Assets→Fantasy Chess RPG Character→Prefabs→Arthur

ArthurをドラックアンドドロップしてTestSceneに追加します。

AnimationControllerを追加

Asstes→Create→Folder

Animationフォルダを作成します。

Assetes→Animations→Create→Animator Controller

Animator ControllerをPlayerControllerに名前を変更します。

ついでに、TestSceneのarthur_01をPrefabsを解除します。

TestScene→arthut_01→Unpack Prefab

Animatoion Controllerの設定

Asstest→Animations→Player Controller

Player Contollrtをダブルクリックし、Animator Windowを開きます。

Assets→Fantasy Chess RPG Character – Arthur→models

modelsのarthur_idle_01、arthur_walk_01、arthur_attack_01の順にAnimator Windowへドラックアンドドロップで追加します。

Animator Windowのarthur_idel_01を右クリックし、Make Transition

arthur_walk_01を選択します。

同様の作業を繰り返し、下の画像のようにします。

それでは、Transitionの設定をしていきます。

まずは、arthur_idel_01→arthur_walk_01の矢印を選択します。

idel状態からwalk状態にすぐに遷移してほしいので、Has Exit Timeのチェックを外します。

Transition Duarationは0に設定します。

次は、arthur_idel_01←arthur_walk_01

先ほどと同様に、walk状態からidel状態にすぐに遷移してほしいので、Has Exit Timeのチェックを外します。

Transition Duarationは0に設定します。

次は、arthur_walk_01→arthur_attack_01

こちらも先ほどと同様に、walk状態からattack状態にすぐに遷移してほしいので、Has Exit Timeのチェックを外します。

Transition Duarationは0に設定します。

次は、arthur_idel_01→arthur_attack_01

こちらも同様に、

walk状態からattack状態にすぐに遷移してほしいので、Has Exit Timeのチェックを外します。

Transition Duarationは0に設定します。

最後に、arthur_idel_01←arthur_attack_01

Has Exit Timeを外してしまうと、攻撃がキャンセルできるようになってしまうので、こちらはそのままにしておきます。

次に遷移の条件を追加していきます。

Animator Windowの画面左側、Parametersを選択して、矢印のように+ボタンを押します。

今回はFloatのSpeedとTriggerのAttackを追加します。

さっき作った条件を遷移に追加します。

arthur_idel_01→arthur_walk_01

Conditions→Speed、Greate、0.01にします。次は、arthur_idel_01←arthur_walk_01

Conditions→Speed、Less、0.01にします。

次は、arthur_walk_01→arthur_attack_01

Conditions→Attackにします。

次は、arthur_idel_01→arthur_attack_01

Conditions→Attackにします。

以上で、Animator Controllerの設定は完了です。

arthurの設定

Assets→Animations→PlayerControllerをTestScene→arthur_01→Animatorにドラックアンドドロップ

Add Componentでarthur_01にRigidbodyを追加

Freeze Position Yにチェックを入れます。これにより上下移動することがなくなります。

Freeze Potation X、Zにチェックを入れます。これにより、オブジェクトが回転することがなくなります。

Add Componentでarthur_01にCapsuelColliderを追加

Is Triggerにチェックを入れます。

これにより、オブジェクトに当たり判定をつけることができます。

Center 1.5、Radius 0.8、Height 3.2に設定します。

床を作成

Test Scene→3D Object→Plane

PlaneのTransformをResetします。

スクリプトの作成

Assets→Create→Folder

Scriptsフォルダを作成します。

Assets→Scripts→Create→C#Scripts

PlayerManagerScriptを作成します。

PlayerManagerScriptsをダブルクリックし、下記のように変更します。

プログラムの説明をすると、とても長くなってしまうので今回は省きます。

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

public class PlayerManager : MonoBehaviour
{
Rigidbody rb;
Animator animator;
float x;
float z;

// Start is called before the first frame update
void Start()
{
rb = GetComponent<Rigidbody>();
animator = GetComponent<Animator>();
}

// Update is called once per frame
void Update()
{

x = Input.GetAxisRaw("Horizontal");
z = Input.GetAxisRaw("Vertical");

if(Input.GetKeyDown(KeyCode.Space))
{
animator.SetTrigger("Attack");
}

}

private void FixedUpdate()
{
Vector3 direction = transform.position + new Vector3(x,0,z);
transform.LookAt(direction);
rb.velocity = new Vector3(x,0,z)*3f;
animator.SetFloat("Speed",rb.velocity.magnitude);
}

}

Assets→Scripts→PlayerManagerをarthur_01にドラックアンドドロップします。

実行すると、パソコンの十字キーで移動し、スペースキーで攻撃することができます。

まとめ

今回は、3DのキャラクターをAnimationさせる方法を解説しました。ですがこのままだと、キャラクター攻撃の際地面を滑るような形になってしまいます。

次回は、攻撃中は止まりながら攻撃できるようにします。

【Unity】攻撃アニメーション中は、キャラクターが移動しないように制御しよう!
攻撃時は、キャラクターが移動することなくその場で攻撃アニメーションできるようにします。

コメント

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