feat: 플레이어 경직/다운 회복 구간 추가
- HitReactionController에 경직, 다운 회복 가능 구간, Hit 속도 배율 파라미터 처리를 추가 - DownBegin/Recover 상태 종료를 StateMachineBehaviour로 받아 구르기 허용 구간과 다운 해제를 분리 - 드로그 발구르기를 경직 이펙트로 전환하고 넉백/경직 이펙트에서 Hit 애니메이션 속도 배율을 설정 가능하게 정리 - PlayMode 테스트를 추가해 경직/넉백이 Hit 애니메이션 속도 배율을 실제로 반영하는지 자동 검증
This commit is contained in:
@@ -38,11 +38,26 @@ namespace Colosseum.Player
|
||||
/// </summary>
|
||||
public bool IsStunned => abnormalityManager != null && abnormalityManager.IsStunned;
|
||||
|
||||
/// <summary>
|
||||
/// 경직 상태 여부
|
||||
/// </summary>
|
||||
public bool IsStaggered => hitReactionController != null && hitReactionController.IsStaggered;
|
||||
|
||||
/// <summary>
|
||||
/// 넉백 상태 여부
|
||||
/// </summary>
|
||||
public bool IsKnockbackActive => hitReactionController != null && hitReactionController.IsKnockbackActive;
|
||||
|
||||
/// <summary>
|
||||
/// 다운 상태 여부
|
||||
/// </summary>
|
||||
public bool IsDowned => hitReactionController != null && hitReactionController.IsDowned;
|
||||
|
||||
/// <summary>
|
||||
/// 다운 중 구르기 가능 구간 여부
|
||||
/// </summary>
|
||||
public bool IsDownRecoverable => hitReactionController != null && hitReactionController.IsDownRecoverable;
|
||||
|
||||
/// <summary>
|
||||
/// 침묵 상태 여부
|
||||
/// </summary>
|
||||
@@ -76,17 +91,28 @@ namespace Colosseum.Player
|
||||
/// <summary>
|
||||
/// 플레이어가 직접 이동 입력을 사용할 수 있는지 여부
|
||||
/// </summary>
|
||||
public bool CanMove => CanReceiveInput && !IsStunned && !IsDowned && !BlocksMovementForCurrentSkill();
|
||||
public bool CanMove => CanReceiveInput && !IsStunned && !IsStaggered && !IsKnockbackActive && !IsDowned && !BlocksMovementForCurrentSkill();
|
||||
|
||||
/// <summary>
|
||||
/// 점프 가능 여부
|
||||
/// </summary>
|
||||
public bool CanJump => CanReceiveInput && !IsStunned && !IsDowned && !BlocksJumpForCurrentSkill();
|
||||
public bool CanJump => CanReceiveInput && !IsStunned && !IsStaggered && !IsKnockbackActive && !IsDowned && !BlocksJumpForCurrentSkill();
|
||||
|
||||
/// <summary>
|
||||
/// 일반 스킬 시작 가능 여부
|
||||
/// </summary>
|
||||
public bool CanUseSkills => CanReceiveInput && !IsStunned && !IsDowned && !IsSilenced && !BlocksSkillUseForCurrentSkill();
|
||||
public bool CanUseSkills => CanReceiveInput && !IsStunned && !IsStaggered && !IsKnockbackActive && !IsDowned && !IsSilenced && !BlocksSkillUseForCurrentSkill();
|
||||
|
||||
/// <summary>
|
||||
/// 회피 스킬 시작 가능 여부
|
||||
/// </summary>
|
||||
public bool CanEvade => CanReceiveInput
|
||||
&& !IsStunned
|
||||
&& !IsStaggered
|
||||
&& !IsKnockbackActive
|
||||
&& !IsSilenced
|
||||
&& (!IsDowned || IsDownRecoverable)
|
||||
&& !BlocksSkillUseForCurrentSkill();
|
||||
|
||||
/// <summary>
|
||||
/// 특정 스킬의 시작 가능 여부.
|
||||
@@ -97,9 +123,15 @@ namespace Colosseum.Player
|
||||
if (skill == null)
|
||||
return false;
|
||||
|
||||
if (!CanReceiveInput || IsStunned || IsDowned || IsSilenced)
|
||||
if (!CanReceiveInput || IsStunned || IsStaggered || IsKnockbackActive || IsSilenced)
|
||||
return false;
|
||||
|
||||
if (IsDowned)
|
||||
{
|
||||
if (!IsDownRecoverable || !skill.IsEvadeSkill)
|
||||
return false;
|
||||
}
|
||||
|
||||
return !BlocksSkillUseForCurrentSkill();
|
||||
}
|
||||
|
||||
@@ -110,7 +142,7 @@ namespace Colosseum.Player
|
||||
{
|
||||
get
|
||||
{
|
||||
if (!CanReceiveInput || IsStunned || IsDowned)
|
||||
if (!CanReceiveInput || IsStunned || IsStaggered || IsKnockbackActive || IsDowned)
|
||||
return 0f;
|
||||
|
||||
return abnormalityManager != null ? abnormalityManager.MoveSpeedMultiplier : 1f;
|
||||
|
||||
Reference in New Issue
Block a user