Study Works

YuukiHiraiの勉強したものを上げていきます。

UnityでTPSアクションゲームを作る 第2回

一週間ぶりですね。

あれから仕事終わりにコツコツと作った進捗の動画をアップロードしています。

youtu.be

今までキャラの移動はスクリプトで書いていたのですが、今回からはRootモーションによる移動や回転を中心に行っていきます。

docs.unity3d.com

あとはブレンドツリーを使ったりなど

docs.unity3d.com

全体図はこんな感じです。

f:id:yuukihirai0331:20170409220757p:plain

歩行アニメーションが歩くモーションと走るモーションのブレンドでしています。

f:id:yuukihirai0331:20170409221008p:plain

攻撃アニメーションはイベント処理(ダメージなどどのアニメーションから派生するモーション)で実装しています。攻撃モーションは複数存在するのでサブステートで一括にまとめています。

f:id:yuukihirai0331:20170409221458p:plain

攻撃アニメーションの際、アニメーションイベントを入れてHitの処理を入れています。

docs.unity3d.com

f:id:yuukihirai0331:20170409221800p:plain

ソースコードはこんな感じ

>||

public class PlayerAction : MonoBehaviour {

Animator Animator;

bool isNextAttack = true;
int AttackCount = 0;

void Start()
{
Animator = GetComponent<Animator>();
}

void Update()
{
//アクションボタンが押されたときフラグが立っていたら
if (Input.GetButtonUp("Action")&&isNextAttack == true)
{
//アニメータのカウントに代入
Animator.SetInteger("AttackCount", AttackCount);
//攻撃アニメーション開始
Animator.SetTrigger("isAttack");
//攻撃し終えるまでフラグを下ろす
isNextAttack = false;
}
}

public void Hit()
{
//ヒットした時の処理
}

public void Next(int num)
{
//攻撃判定が終了して次に移行可能状態
isNextAttack = true;
AttackCount = num;
}

public void End(int num) {
//攻撃処理終了
AttackCount = num;
}
}

||<

大雑把ですがこんな感じでソースを書いて先ほどの全体図のアニメーションレイヤーのパスに割り当てていきます。

今回はこんな感じで来週は敵の処理を入れていこうと思います。