플레이어의 공격이 연속적으로 이어지는 콤보 모션을 만들어 봅니다.
공격1회 실행중 일정시간내 다시 공격 커맨드가 이어지면 두번째 공격이 실행되도록 합니다.
1. 애님몽타주 생성
콤보공격에 사용할 몽타주를 생성하도록 합니다.
공격애니메이션 우클릭 > 생성 > 애님몽타주 생성
2. 노티파이 추가
각각의 애니메이션의 적절한 프레임 위치에 노티파이를 추가하도록 합니다.
Ps. 노티파이 생성 다시보기
블루프린트 클래스 생성 / 모든클래스 AnimNotify
노티파이에서 함수 카테고리의 우측 오버라이드를 클릭후
Get Notify Name (노티파이의 이름 설정), Received Notify (호출시 실행할 이벤트 설정) 을 생성해서 지정합니다.
예시 ) 공격이 끝나는지점에 사용할 노티파이
3. 변수 생성하기
애님 몽타주 타입의 배열 변수와 콤보 카운트 변수를 생성하고 몽타주 실행 함수와 연결합니다.
4. 몽타주 배열에 몽타주 넣어주기
몽타주타입의 배열변수를 클릭하고 디테일창을 통하여 배열에 몽타주를 넣어줍니다.
5. 콤보 카운트 조건문(이벤트) 만들기
공격 횟수와 공격시 일정시간을 지정해줄 수 있는 조건문들을 만들도록 합니다.
이때 각 콤보마다의 입력제한시간을 지정해줄 배열변수와 제한시간을 측정할 시간변수의 두가지 변수를 추가생성합니다.
생성한 변수들은 아래처럼 배치해 보도록하겠습니다.
몽타주를 처음에 한번 실행하고 타이머의 시간을 콤보 횟수와 일치하는 콤보배열에서 시간을 가져와
타이머에 세팅합니다. 이후 콤보 카운트를 1개 증가시켜 다음 콤보로 넘어가고 다음 공격시
해당 콤보 카운트에 맞는 몽타주가 실행될 것입니다.
이때 콤보 타이머의 시간이 줄어드는 로직이 없으므로 Tick 이벤트를 통하여 시간이 타이머의 값이 감소하도록 설정 해야할 필요가 있습니다.
틱이벤트로 매프레임 타이머의 값이 0보다 크다면 매초값을 빼주며 세팅하고
타이머의 값이 0보다 작아질경우 콤보 카운터를 0으로 초기화 시켜줍니다.
추가적으로 콤보 카운터가 공격할떄마다 늘어나지만 몽타주의 갯수를 넘어가는 숫자가 되지 않도록 조건을 마련합니다.
콤보 실행 해보았으나 입력시간이 초과되면 다시 처음 공격으로 되돌아가고 연속 공격할 경우 콤보가 이어지는 모습을 볼 수 있습니다.
또한 현재 허리를 기준으로 블렌드한 모션이기때문에 상체부분만 화려하게 움직이는 것을 볼 수 있습니다.
때문에 많이 부자연 스럽습니다.
추가. 애니메이션 블렌드 수정
처음 콤보만 허리를 기준으로 블렌드 하고
나머지의 모션들은 풀바디로 적용시켜보도록 합니다.
새로운 캐시포즈 추가 후 해당 캐시로 또한번 블렌드 합니다.
여기서 주의해야할 것은 이번 블렌드 하기전의 슬롯의 설정을 FullBody로 설정해야합니다.
이후 풀바디를 지정해줄 몽타주의 슬롯 이름 또한 똑같이 변경 해 주도록 합니다.
마지막으로 블렌드할 지점을 허리(spine_01)였던 곳에서 스켈레톤의 최상위 루트(Root)로 지정해 주도록 합니다.
끝
'공부 > Unreal Engine 5' 카테고리의 다른 글
[언리얼5] 바다&부력 (0) | 2023.11.19 |
---|---|
[언리얼5] C++ 초기 세팅(Visual Studio 2022) (0) | 2023.11.16 |
[언리얼5] 애니메이션 블렌딩(캐시포즈) (0) | 2023.11.15 |
[언리얼5] Visual Studio Integration Tools 설치 (0) | 2023.11.15 |
[언리얼5] 간단한 런게임 만들어보기 (0) | 2023.11.13 |
댓글