[UE5] Parrying System

윤정민·2023년 5월 8일
1

1. 개요

현재 진행하고 있는 Loglike 프로젝트에서 Parrying System을 MonsterBase에 구현한다.
Usecase는 근접몬스터가 캐릭터에게 공격을 했을 때 캐릭터의 상태가 Parrying상태라면 밀려나며 스턴상태에 빠지게된다.

2. 구현 사항

2.1. BT Stun상태

  • 현재 BT

  • 캐릭터의 Parrying상태 판별
    • 몬스터의 무기에 캐릭터가 Overlap되어 공격이 실행될 때 판별
    • Parrying 상태라면 Niagara Particle 생성
    if (LoglikeCharacter->GetIsParrying())
    {
      UNiagaraFunctionLibrary::SpawnSystemAtLocation(GetWorld(), SparkN, GetActorLocation(), GetActorRotation());
      if (Cast<AMeleeMonsterBase>(this))
      {
        Cast<AMeleeMonsterBase>(this)->Stun();
      }
    }
  • MeleeMonster의 Stun에서 BT key값 변경

2.2. 밀려나가기(Knock-Back)

  • 방향벡터 구하기: 캐릭터->몬스터의 방향벡터를 구한다.

  • 밀려나갈 위치 구하기: 방향벡터*100.f 탐색

    • 몬스터와 해당 위치 사이 물체가 있다면

      • 해당 위치 구하기

      • 오차범위 빼주기: 해당위치로 움직이면 벽에 박히게 되니, 몬스터 캡슐크기만큼 차감

      • 최종결과: Move Location으로 이동

    • 몬스터와 해당 위치 사이 아무것도 없다면 Trace 마지막 위치로 이동

3. 결과

profile
그냥 하자

2개의 댓글

comment-user-thumbnail
2023년 5월 10일

unreal is real?

1개의 답글