언리얼 엔진5 Basic - 캐릭터 공격 판정

타입·2024년 4월 3일

언리얼 강의

목록 보기
13/47

캐릭터 공격 판정

충돌 채널의 설정

  • 캐릭터 액션의 충돌 판정
    월드가 제공하는 충돌 판정 서비스를 사용
    월드 내 배치된 충돌체와 충돌하는지 파악하고, 충돌한 액터 정보를 얻을 수 있음
    월드는 크게 세 가지의 충돌 판정 서비스를 제공함
    • LineTrace: 지정 방향으로 선을 투사하여 충돌 파악
    • Sweep: 도형을 투사하여 충돌 파악
    • Overlap: 지정 영역에 충돌 파악
  • 트레이스 채널과 충돌 프로필 생성
    '편집-프로젝트 세팅-콜리전'
    • 액션 판정을 위한 트레이스 채널의 생성: ABAction, 기본 반응은 무시
    • 캐릭터 캡슐용 프로필: ABAction 트레이스 채널에 반응, 오브젝트 타입은 Pawn
    • 기믹 트리거용 프로필: Pawn에만 반응하도록 설정, 오브젝트 타입은 WorldStatic

공격 판정의 구현

  • 월드 트레이싱 함수의 선택
    세 가지 카테고리로 원하는 함수 이름을 얻을 수 있음
    {처리방법}{대상}{처리설정}
    • 카테고리 1: 처리 방법
      • LineTrace
      • Sweep
      • Overlap
    • 카테고리 2: 대상
      • Test: 무언가 감지되었는지를 테스트
      • Single 또는 AnyTest: 감지된 단일 물체 정보를 반환
      • Multi: 감지된 모든 물체 정보를 배열로 반환
    • 카테고리 3: 처리 설정
      • ByChannel: 채널 정보를 사용해 감지
      • ByObjectType: 물체에 지정된 물리 타입 정보를 사용해 감지
      • ByProfile: 프로필 정보를 사용해 감지
  • 캐릭터 공격 판정의 구현
    캐릭터 위치에서 시선 방향으로 물체가 있는지 감지
    작은 구체를 제장하고 시선 방향으로 특정 거리까지만 투사 (Sweep)
    하나의 물체만 감지 (Single)
    트레이스 채널을 사용해 감지 (ByChannel)
    -> {Sweep}{Single}{ByChannel}
  • 물리 충돌 테스트
    디버그 드로잉 함수를 사용해 물리 충돌을 시각적으로 테스트
    • 90도로 회전시킨 캡슐을 그리기
      - Origin
      - HalfHeight
      - Radius


실습코드

https://github.com/dnjfs/ArenaBattle/commit/72b0514a8cefde6b39fcf5bd75e52663b57e23c7

  • ABAction 트레이스 채널 추가
    EngineTypes.h에 미리 예약된 ECC_GameTraceChannel1 사용 (총 18개까지 추가 가능)

  • AnimNotify 상속하여 구현
    애니메이션 몽타주에 애님 노티파이 추가하면 몽타주 실행 시 해당 클래스의 Notify() 함수 실행

  • 인터페이스로 대상 검사
    다중 상속으로 캐릭터 클래스에 인터페이스도 상속받게 하여 캐스팅으로 객체 검사
    인터페이스에 추가했던 순수 가상 함수는 상속 시 구현
    캐스팅이 정상적으로 되어 객체가 유효하다면 인터페이스를 가지고 있다는 의미니 인터페이스의 함수 호출

profile
주니어 언리얼 프로그래머

0개의 댓글