• Enemy가 적대관계의 피격범위에 들어갔다가 나왔을 때 멈추지 않고 같은 방향으로 돌진하는 버그

공격범위 밖일 때, Attack 상태를 빠져나가는 처리를 하지 않아서 그런 것이었다.

if (delta.sqrMagnitude > Range * Range)
{
    if (delta.sqrMagnitude < 4 * Sight * Sight)
    {
        State.Current = CreatureState.Chase;
        Debug.Log("공격범위 벗어남");
        return;
    }
}

공격범위를 벗어났고 시야범위에 있다면 Chase 상태가 되도록 조건을 걸었다.

 

  • 피격 당하면 Idle 상태로 돌아가는 버그

피격 시, Idle로 전환되도록 임시 방편으로 설정해둔 코드 때문이었다.

if (hitInfo.Knockback.time > 0) {
    CreatureState originState = State.Current; // 원래 상태 저장.
    State.Current = CreatureState.Hit;
    Velocity = (this.transform.position - attacker.CurrentPosition).normalized * hitInfo.Knockback.speed;
    State.SetStateAfterTime(originState, hitInfo.Knockback.time); // 넉백 시간이 끝나면 원래 상태로 돌아간다.
}

Hit 상태 전의 상태를 저장한 뒤, 넉백 시간이 끝나면 돌아오도록 했다.

'부트캠프 > Project' 카테고리의 다른 글

Enemy - FSM(6) 트러블 슈팅 및 수정  (0) 2024.02.16
Enemy - FSM(5) Blend Tree(블렌드 트리)  (0) 2024.02.14
Enemy - FSM(3)  (0) 2024.02.13
Enemy - FSM(2)  (0) 2024.02.08
Enemy - FSM(1)  (0) 2024.02.07

+ Recent posts