+ 메인 컨트롤러(CombatPlayerController) 와 움직임 컨트롤러(PhysicsMovement)로 기능 분할 + rigidbody를 이용한 움직임으로 전체 로직 수정 + Dash 애니메이션 변경 + Dash, Attack 공격 속도에 따라서 애니메이션 동기화 + 03.CombatTest Scene 에셋 맵 전체 수정(Layer, Collider 등)
40 lines
1.5 KiB
C#
40 lines
1.5 KiB
C#
using UnityEngine;
|
|
|
|
// ReSharper disable once CheckNamespace
|
|
namespace BlueWaterProject
|
|
{
|
|
public class ComboAttack : StateMachineBehaviour
|
|
{
|
|
private CombatPlayerController combatPlayerController;
|
|
|
|
public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
|
|
{
|
|
if (combatPlayerController == null)
|
|
{
|
|
combatPlayerController = animator.GetComponentInParent<CombatPlayerController>();
|
|
}
|
|
var animationLength = stateInfo.length;
|
|
animator.speed = animationLength / combatPlayerController.GetAttackTime();
|
|
|
|
combatPlayerController.SetIsAttacking(true);
|
|
combatPlayerController.SetIsComboPossible(true);
|
|
}
|
|
|
|
public override void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
|
|
{
|
|
if (stateInfo.normalizedTime >= 1f)
|
|
{
|
|
animator.SetBool(CombatPlayerController.IsAttackingHash, false);
|
|
}
|
|
}
|
|
|
|
public override void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
|
|
{
|
|
animator.speed = 1f;
|
|
combatPlayerController.SetIsComboPossible(false);
|
|
combatPlayerController.SetIsComboAttacking(false);
|
|
combatPlayerController.SetIsAttacking(false);
|
|
animator.SetBool(CombatPlayerController.IsAttackingHash, false);
|
|
}
|
|
}
|
|
} |