プレイヤーに攻撃アニメーションをつける
1, 攻撃アニメーションをドラッグし、idleとwalkからmake transitionをつける。(idleには帰りのmake transitionをつける)
2, ParametarsでTriggerでAttakを作成し、Conditionsに設定する。
各Transitionに設定する。(idleに帰るTransitionは設定なしでOK)
HasExitTimeのチェックを外し、Transitiopn Duratorは0にする。
3, idleアニメーションを選択し、Transitionsの順番を変更する。
(idleから攻撃を優先する)
4, PlayerManagerに下記のスクリプトを書く
(Vを押すと攻撃アニメーションが発動する)
PlayerManager
//攻撃
if (Input.GetKeyDown(KeyCode.V))
{
animator.SetTrigger("Attack");
}
攻撃しながら移動できてしまうバグの修正
1, Attackを選択し、AddBehaviourからPlayerAttackBehaviourを作成する
2, PlayerAttackBehaviourに下記のコードを記述する
PlayerAttackBehaviour
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerBrooklynBehaviour : StateMachineBehaviour
{
// OnStateEnter is called when a transition starts and the state machine starts to evaluate this state
override public void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
animator.GetComponent<PlayerManager>().moveSpeed = 0;
}
// OnStateUpdate is called on each Update frame between OnStateEnter and OnStateExit callbacks
override public void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
}
// OnStateExit is called when a transition ends and the state machine finishes evaluating this state
override public void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
animator.GetComponent<PlayerManager>().moveSpeed = 3;
}
// OnStateMove is called right after Animator.OnAnimatorMove()
//override public void OnStateMove(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
//{
// // Implement code that processes and affects root motion
//}
// OnStateIK is called right after Animator.OnAnimatorIK()
//override public void OnStateIK(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
//{
// // Implement code that sets up animation IK (inverse kinematics)
//}
}