공중체공스킬을 만들어보자
A키를 누르면 공중에 체공
A키를 다시 누르면 공중에서 세번까지 검격을 발사 한뒤 다시 제자리로 돌아가는 스킬을 제작해보겠습니다
그러면 점프하고 공중을 체공하는걸 먼저 구현해보겠습니다
LaunchCharacter로 캐릭터를 z축으로 발사시켜줍니다
GravityScale을 0으로 만들어 무중력상태로 변경하고
또한 jumpStartLoc에 a키를 입력했을때의 현재 플레이어의 위치를 구한뒤
jumpStartLoc에 값을 넘겨주었습니다
이 함수가 실행되면 gravity가 0인상태로 launch되버리기때문에 아무런 조치를 해주지않는다면
무한정으로 z축으로 날라가버립니다
Tick에서 A스킬의 위치계산값을 제어해주는 함수를 하나 실행시켜줍니다
A스킬을 누르면 bSkillAActive플래그 설정이되고
a스킬을 눌렀을때의 위치보다 400이상이되면
DisableMovement()함수로 모든 움직임을 멈춥니다
StopMovementImmediately()로 해도되는데 만약 rootmotion이 활성화가 되어있다면
애니메이션 반동으로 움직일수도 있습니다
그다음 공중에 있는지 바닥에 있는지 확인하는 함수도 만들어주겠습니다
a스킬을 눌렀을때의 시작 위치z축 기준 10 이상이면 bHovering 플래그를 변경합니다
그러면 스킬A키를 눌렀고 bHovering 호버링 중이면 공격자세가 나오고 공격을 할수있게 해보겠습니다
애님인스턴스를 선언
점프애니메이션 aSkillStartAnim이 실행된 이후에 조준자세 애니메이션이 나와야하므로
animInstance->Montage_SetBlendingOutDelegate(blendOutDelegate, aSkillStartAnim);
SetBlendingOutDelegate 블렌딩아웃일때 델리게이트로 자동호출합니다
델리게이트에서 호출될 함수입니다
aSkillAming 애니메이션을 몽타쥬 길이만큼 실행시키는 델리게이트 함수입니다
그러면 점프 애니메이션이 끝나면 자동으로 델리게이트 함수로 인해 에이밍 몽타쥬가 출력됩니다
그러면 공중에서 공격애니메이션조건을 추가하겠습니다
공중에서의 애니메이션은 총 두개를 추가해줬습니다
1번공격과 3번공격은 aSkillAimingAttack1
2번공격은 aSkillAimingAttack2으로 하겠습니다
호버링 공격의 쿨타임을 위한 타이머선언과 쿨타임의 플래그변수 선언
타이머에서 플래그 변수를 설정할 함수 선언
스킬카운트 변수를 선언
스킬이 끝나면 skillACount변수를 증가시켜 변수값으로 몇번째 공격인지를 판단합니다
증가된 카운트로 각각의 애니메이션과 알맞은 델리게이트를 호출합니다
쿨타임함수도 같이 호출해줍니다
최소 쿨타임이 적용되며 skillCount 값에 따라 알맞은 애니메이션이 나오는걸 확인할수있습니다
그러면 이제 호버링 상태일때 마우스를 처다보도록 하겠습니다
모션워핑 기술을 사용해서 해보겠습니다
모션워핑 기술은 전 글에 포스팅 해놨으니 궁금하신분은 확인해보세요
https://lucodev.tistory.com/25
Unreal - 모션워핑(Motion Warping)
현재 공격하거나 스킬을 사용하면 애니메이션이 나오는데애니메이션 도중 방향을 꺾을수가없다그래서 적이 지나갔는데도 애니메이션은 계속 나오니조작감도 별로고 너무 딱딱한느낌이 든다.
lucodev.tistory.com
마지막 내려찍는 공격도 추가해보겠습니다
움직임을 Falling으로 변경 그리고 중력값을 디폴트값인 1로 변경한뒤 -z축으로 캐릭터를 launch발사시킵니다
델리게이트가 원하는시간에 호출이 되어 내려찍는 느낌을 표현하였습니다
그런데 칼이 내려찍을때 위치가 정 반대인거같으니 노티파이로 칼의 위치를 변동해봤습니다
'Unreal5 프로젝트 다이어리' 카테고리의 다른 글
Unreal - 어색한 충돌 처리 해결하기 (0) | 2025.04.21 |
---|---|
Unreal - 공중 공격 - (2) (0) | 2025.04.20 |
Unreal - 모션워핑(Motion Warping) (0) | 2025.04.12 |
Unreal - 넉백 날려보내기 (0) | 2025.04.11 |
Unreal - 캐릭터 광역공격 만들기 (0) | 2025.04.11 |