OldBlueWater/BlueWater/Assets/02.Scripts/Character/CombatPlayer/StateMachines/Dash.cs
NTG 419259c5f4 #165 전투 플레이어 스크립트 분리 및 로직 수정
+ 메인 컨트롤러(CombatPlayerController) 와 움직임 컨트롤러(PhysicsMovement)로 기능 분할
+ rigidbody를 이용한 움직임으로 전체 로직 수정
+ Dash 애니메이션 변경
+ Dash, Attack 공격 속도에 따라서 애니메이션 동기화
+ 03.CombatTest Scene 에셋 맵 전체 수정(Layer, Collider 등)
2024-01-27 01:26:50 +09:00

40 lines
1.5 KiB
C#

using UnityEngine;
// ReSharper disable once CheckNamespace
namespace BlueWaterProject
{
public class Dash : 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.GetDashTime();
combatPlayerController.SetIsDashing(true);
combatPlayerController.SetEnableDashing(false);
}
public override void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
if (stateInfo.normalizedTime >= 1.0f)
{
animator.SetBool(PhysicsMovement.IsDashingHash, false);
}
}
public override void OnStateExit(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
{
animator.speed = 1f;
combatPlayerController.SetIsDashing(false);
animator.SetBool(PhysicsMovement.IsDashingHash, false);
combatPlayerController.CoolDown(combatPlayerController.GetDashCooldown(), () => combatPlayerController.SetEnableDashing(true));
}
}
}