+ Sprite 피격시 하얗게 변하는 FlashWhite 쉐이더 추가 ㄴ 보스에게만 적용 중 + 전투 플레이어의 HitStop 수정 ㄴ 유니티 애니메이션 이벤트 오류로 인해서 코루틴 방식으로 로직 변경 ㄴ 관련 공격 애니메이션 변경 + POLY Fantasy Town Material URP로 변경 + FieldMinions Agent 추가 + Combat 씬 ForestArea에 임시로 FieldMinions 추가
66 lines
2.6 KiB
C#
66 lines
2.6 KiB
C#
using UnityEngine;
|
|
using UnityEngine.InputSystem;
|
|
|
|
// ReSharper disable once CheckNamespace
|
|
namespace BlueWaterProject
|
|
{
|
|
public class ComboAttackBehavior : StateMachineBehaviour
|
|
{
|
|
private CombatPlayerController combatPlayerController;
|
|
|
|
[SerializeField] private LayerMask groundLayer;
|
|
|
|
public override void OnStateEnter(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
|
|
{
|
|
Debug.Log("애니메이션 실행");
|
|
if (combatPlayerController == null)
|
|
{
|
|
combatPlayerController = animator.GetComponentInParent<CombatPlayerController>();
|
|
}
|
|
var animationLength = stateInfo.length;
|
|
animator.speed = animationLength / combatPlayerController.GetAttackTime();
|
|
|
|
combatPlayerController.SetEnableMoving(false);
|
|
combatPlayerController.SetIsAttacking(true);
|
|
combatPlayerController.SetIsComboPossible(true);
|
|
|
|
if (combatPlayerController.MyCurrentState.useMouseAttack)
|
|
{
|
|
var mousePos = Mouse.current.position.ReadValue();
|
|
var ray = CameraManager.Inst.MainCam.ScreenPointToRay(mousePos);
|
|
|
|
if (!Physics.Raycast(ray, out var hit, float.MaxValue, groundLayer)) return;
|
|
|
|
var attackDirection = (hit.point - combatPlayerController.GetCurrentPosition()).normalized;
|
|
attackDirection.y = 0f;
|
|
combatPlayerController.SetPreviousMoveDirection(attackDirection);
|
|
}
|
|
}
|
|
|
|
public override void OnStateUpdate(Animator animator, AnimatorStateInfo stateInfo, int layerIndex)
|
|
{
|
|
if (stateInfo.normalizedTime < 0.2f)
|
|
{
|
|
combatPlayerController.MoveToCurrentDirection(1f);
|
|
}
|
|
else if (combatPlayerController.GetIsComboAttacking() && stateInfo.normalizedTime is > 0.4f and < 0.45f)
|
|
{
|
|
combatPlayerController.MoveToCurrentDirection(10f);
|
|
}
|
|
|
|
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);
|
|
combatPlayerController.SetEnableMoving(true);
|
|
}
|
|
}
|
|
} |