일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- c++
- unrealengineai
- c언어정리
- 프로그래밍
- 25.06.11dir
- 영단어정리
- livrary
- c++porinter
- 언리얼ai
- 프로그래밍일기
- 자료형타입
- 언리얼엔진
- 월드아웃라이너
- 게임엔진튜토리얼
- 게임개발
- leveleditor
- 각도변환
- 자료구조
- 자료구조정리
- uaiperception
- DX
- c++class
- 언리얼엔진공부
- ipc(inter process communication)
- 언리얼엔진5
- c++용어정리
- bttask
- directx
- 언리얼비헤이어비어트리
- 수학용어정리
- Today
- Total
루리코딩 세상
Unreal Engine : 콤보 공격 만들기 본문
[애니메이션 시퀀스], [애님 몽타주],
[블루프린트클래스 : 노티파이], [블랜디드 스페이스]
위의 4가지 기능을 활용해서, 기본적인 공격과
액션 매핑[키보드 입력, 마우스 입력] 을 인식하는 동작들을
다뤘다. 이번에는 연속적인 동작을 구현해내는 방법에 대해서
정리해보고자 한다.
먼저 [블루 프린트 : 캐릭터] 클래스의 많은 수의
변수가 생겨난 것을 정리하는 것부터 진행했다.
좌측하단의 아웃라이너에 있는 각각의
변수들을 클릭하여 드래그 된 상태에서
우측의 [디테일]을 확인하게 되면 다음과 같이 카테고리가 기본값인 디폴트로 되어있는 것을 임의로 변경하여,
내부적인 디렉토리 기능을 만들어 줄 수 있다.
변수타입 : 애님 몽타주 [오브젝트 레퍼런스 : 배열 타입]
을 선택하여, 몽타주를 넣을 수 있는 형식으로 변경해준다.
[변수 컨테이너 타입 설명]
🔹 단일 | Single | 하나의 값만 저장하는 일반 변수 | int, bool, AnimMontage 하나만 저장할 때 |
🔹 배열 | Array | 여러 값을 순서대로 저장 (인덱스 있음) | 콤보 공격 애니메이션 목록, 여러 적 리스트 등 |
🔹 세트 | Set | 중복 없는 값들의 집합 (순서 없음) | 유니크 아이템 모음, 달성한 업적들 등 |
🔹 맵 | Map | Key-Value 쌍으로 구성된 딕셔너리 | 무기 이름(Key) → 데미지 값(Value), 애니 이름 → 몽타주 참조 |
배열로 생성된 변수 컨테이너에 인덱스를 추가하여,
미리 만들어둔 [몽타주 : 애니메이션 시퀀스] 들을 추가하여,
쭉 나열해준 모습이다.
이후에 몇가지 변수들을 더 추가해줬다. 인덱스를 담당하고 있는 [Combo_Montages]
[Enable(bool)] : 콤보 구간에 들어왔는가를 판단하는 역할Ture 일 경우 콤보가 시작.
[Exist(bool)] : 구간 안에서 입력을 인식하는 역할
[Index(Integer)] : 현재 진행되는 공격이 몇번째인가를 판단하는 역할
[AnimNotifyState] 클래스를 이번에 사용한다. 해당 구간이 끝나지 않은 상태에서도
활성화 하는 기능을 갖고 있다.
기존의 사용하던 [AnimNotify]는 기존의 동작이 끝나지 않은 상태로 넘어가게 될 경우 오류를 발생되지만, 해당 기능은 End 구간이 되지 않아도 Tick 구간 별로 호출한 상태로 End 상태로 넘어간다.
[AnimNotify] 기존의 사용하던 노티파이와
오버라이드에서부터 다른 기능을 보인다.
대표적으로 Begin, End, Tick 기능이 추가되었다.
먼저 사용해볼 기능과 노드 사용은 다음과 같았다.
GetNotifyName
Received_NotifyBegin
Received_NotifyEnd
Montages - Notify - BlueprintClass : Character
몽타주로 이동하여, 기존의 추가하던 노티파이 노드에 새롭게 노티파이 스테이트가 추가된 것을 볼 수 있다.
기존에 사용하던 노티파이와 다르게 구간을 설정할 수 있는
특성이 가장 도드라지는 차이점으로 보인다.
[블루프린트:캐릭터 클래스에 Custom Event]
[An_begin_Action]을 추가했다.
이후 [Notify]에서 설정을 맞춰준 상태.
1. 실습 간에 실수한 부분 : 오타
Combo를 오기입하여 Combe로 작성해뒀었던 문제로 인해서,
[Received_NotifyBegin]에서 호출되지 않는 문제를 겪었다.
변수가 [Custom Event]에서 정상적으로 호출되지 않을 때 꼭
해당 변수를 입력한 위치에서 오타나, 잘못된 오브젝트 레퍼런스를
참조하고 있는 것은 아닌지 확인하도록 하자. 오늘은 그래도 금방 찾았다.
블루프린트는 그래도 친절하다. 컴파일 해주면 입력해둔 같은 변수명에 해당하면 전부 컴파일해줬다....ㅜ-ㅜ
DirectX랑 C++에서는 얼마나 헤맬지 조금 두렵다. 그래도 차분하게 보면 보인다.
2. 작성 21:40분 경에 동작 제대로 구현 안되는 문제있음, 입력값은 인지하나 동작이 다음으로 안넘어감, 이부분 체크해야함
콤보 입력시 (마우스 좌클릭)을 실행 중에
True로 인식하지 못하는 문제점을 발견했다.
Notify 변수 입력 상의 문제가 있을 것으로
판단이 되어, Combo Enable Notify를 확인하니 체크박스가 정확히 되어있지 않아 실행을 수정한 뒤에 콤보가 정상적으로 입력된다.
25.06.06 23:41 수정완료
'이론 > Unreal Engine' 카테고리의 다른 글
Unreal Engine : Collision 설정하기 (0) | 2025.06.07 |
---|---|
Unreal Engine : Slot Notify (1) | 2025.06.07 |
UnrealEngine : 몽타주 기능 활용하기 (0) | 2025.06.05 |
Unreal Engin 5 : 장착된 액터 이동시키기 (1) | 2025.06.05 |
Unreal Engine 5 : 무기 장착하자 (블랜디드 스페이스 2D, 애님 그래프, 블루프린트 액터 및 캐릭터 함수 호출하기) (0) | 2025.06.04 |