Plite
전자오락 공방
Plite
전체 방문자
오늘
어제
  • 분류 전체보기 (274)
    • 프로젝트 (18)
      • 완성 프로젝트 (3)
      • 프로젝트 진행 내역 (15)
    • 공부 및 정리 (241)
      • 백준 코드 (222)
      • C++ (8)
      • DirectX (2)
      • Unreal Engine (6)
      • 프로그래밍 패턴 (3)
    • 기타 (12)
      • 기타 주저리 (10)
    • 게임과 취미 (1)
    • 대문 (1)

블로그 메뉴

  • 홈
  • 프로젝트
  • 취미, 일상
  • 백준 프로필

공지사항

  • [Read Me]
  • 제 블로그에 방문하신 것을 환영합니다.

인기 글

태그

  • 동적계획법
  • 정수론
  • 최소 스패닝 트리
  • 백준
  • 수학
  • 백트래킹
  • 투포인터
  • 조합론
  • 그래프
  • 트라이
  • C++
  • 유니온 파인드
  • 브루트포스
  • 스택
  • 위상 정렬
  • SCC
  • 큐
  • LCA
  • 트리
  • 이분탐색
  • 우선순위큐
  • 기하
  • 세그먼트 트리
  • 분할정복
  • 구현
  • 정렬
  • 문자열
  • UC++
  • KMP
  • 누적합

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
Plite

전자오락 공방

UC++ 프로젝트 - 8
프로젝트/프로젝트 진행 내역

UC++ 프로젝트 - 8

2022. 12. 21. 21:56

 

오랜 고민 끝에 위와 같이 Action Component를 분리하여 Action에 관한 내용을 담당하기로 했습니다.

 

* 바뀐 구조의 장점

 

- 기존에 만든 Action Asset을 여러 Weapon에서 재사용 가능합니다.

- 플레이어의 현재 상태, 어떤 버튼을 눌렀는 지에 따라 원하는 액션을 정해줄 수 있습니다.

 

 

=> 즉, 다음과 같은 구조가 됩니다.

 

분리된 액션 애셋
WeaponAsset에서 Weapon 종류에 따라 ActionAsset을 지정해줄 수 있음
어떤 State일 때 동작할 것인가
액션 클래스에 맞는 동작을 어떤 State, 공중에 있을 대 혹은 지상에 있을 때, 어떤 버튼을 눌렀을 때 동작할 것인지 정해줄 수 있는 애셋

 

예를 들어,

 

1. 지상에서 Hitted 상태일 때 None 버튼(상태 변환 시 실행)을 누르면 경직 액션이 실행

2. 공중에서 Idle 상태일 때 Evade 버튼을 누르면 공중 대쉬를 실행

3. Guard 상태일 때 땅에서 Attack 버튼을 누르면 어퍼 슬래쉬를 실행

4. 대쉬 상태일 때 땅에서 Attack 버튼을 누르면 스팅거 스킬을 실행

 

과 같은 액션을 손쉽게 추가하고, 제거할 수 있습니다.

 

뿐만 아니라, Action 관련된 내용은 ActionComponent에서 담당하게 되어

 

AnimNotify들은 더이상 WeaponComponent에서

 

지금 실행 중인 액션이 무엇인지 확인할 필요가 없습니다.

 

 

긴 고민 끝에 위와 같은 구조를 완성하여 매우 기쁩니다.

 

 

추가로, 액션 중 (nullptr이 아닌) 다른 새로운 액션의 실행이

기존 액션을 조기종료 (EndAction()호출) 시키고 발생하도록 코드를 개선했습니다.

 

 

위의 함수는 어떤 입력이 발생 시, 트리거에 걸맞는 액션을 호출하고

 

기존에 있던 액션이 있으면 조기 종료 시키는 코드입니다.

 

RecentAction은 더블 포인터로 선언되어 UCAction*의 주소를 바꿔가며 기억하도록 만들었습니다.

 

 

결과적으로 다음 영상과 같이 액션을 실행합니다.

 

 

저작자표시 (새창열림)

'프로젝트 > 프로젝트 진행 내역' 카테고리의 다른 글

UC++ 프로젝트 - 10  (0) 2022.12.28
UC++ 프로젝트 - 9  (0) 2022.12.23
UC++ 프로젝트 - 7  (0) 2022.12.02
UC++ 프로젝트 - 6  (0) 2022.11.17
UC++ 프로젝트 - 5  (0) 2022.11.09
    '프로젝트/프로젝트 진행 내역' 카테고리의 다른 글
    • UC++ 프로젝트 - 10
    • UC++ 프로젝트 - 9
    • UC++ 프로젝트 - 7
    • UC++ 프로젝트 - 6
    Plite
    Plite
    개발 일지, 게임 이야기 등을 적어두는 공간입니다.

    티스토리툴바