Unreal - 공중 공격 - (1)

2025. 4. 15. 22:27·Unreal5 프로젝트 다이어리

공중체공스킬을 만들어보자

 

A키를 누르면 공중에 체공

A키를 다시 누르면 공중에서 세번까지 검격을 발사 한뒤 다시 제자리로 돌아가는 스킬을 제작해보겠습니다

 

그러면 점프하고 공중을 체공하는걸 먼저 구현해보겠습니다

점프하는 애니메이션을 우선 A키와 바인드해줍니다
컨트롤러에서 A키를 바인딩 후에 캐릭터의 playSkillA함수와 연동

LaunchCharacter로 캐릭터를 z축으로 발사시켜줍니다

GravityScale을 0으로 만들어 무중력상태로 변경하고

또한 jumpStartLoc에 a키를 입력했을때의 현재 플레이어의 위치를 구한뒤

jumpStartLoc에 값을 넘겨주었습니다

 

이 함수가 실행되면 gravity가 0인상태로 launch되버리기때문에 아무런 조치를 해주지않는다면

무한정으로 z축으로 날라가버립니다

Tick에서 A스킬의 위치계산값을 제어해주는 함수를 하나 실행시켜줍니다

A스킬을 누르면 bSkillAActive플래그 설정이되고

a스킬을 눌렀을때의 위치보다 400이상이되면

DisableMovement()함수로 모든 움직임을 멈춥니다

StopMovementImmediately()로 해도되는데 만약 rootmotion이 활성화가 되어있다면

애니메이션 반동으로 움직일수도 있습니다

 

그러면 a키를 눌렀을때의 기준으로 z축 위치가 400이상을 계산한뒤 공중에서 멈춥니다

 

그다음 공중에 있는지 바닥에 있는지 확인하는 함수도 만들어주겠습니다

a스킬을 눌렀을때의 시작 위치z축 기준 10 이상이면 bHovering 플래그를 변경합니다

 

그러면 스킬A키를 눌렀고 bHovering 호버링 중이면 공격자세가 나오고 공격을 할수있게 해보겠습니다

애님인스턴스를 선언

점프애니메이션 aSkillStartAnim이 실행된 이후에 조준자세 애니메이션이 나와야하므로

animInstance->Montage_SetBlendingOutDelegate(blendOutDelegate, aSkillStartAnim);

SetBlendingOutDelegate 블렌딩아웃일때 델리게이트로 자동호출합니다

 

델리게이트에서 호출될 함수입니다

aSkillAming 애니메이션을 몽타쥬 길이만큼 실행시키는 델리게이트 함수입니다

에이밍 자세 애니메이션은 엄청나게 속도를 낮춰나서 오랫동안 나오는 애니메이션입니다

 

그러면 점프 애니메이션이 끝나면 자동으로 델리게이트 함수로 인해 에이밍 몽타쥬가 출력됩니다

 

그러면 공중에서 공격애니메이션조건을 추가하겠습니다

공중에서의 애니메이션은 총 두개를 추가해줬습니다

1번공격과 3번공격은 aSkillAimingAttack1

2번공격은 aSkillAimingAttack2으로 하겠습니다

 

호버링 공격의 쿨타임을 위한 타이머선언과 쿨타임의 플래그변수 선언

타이머에서 플래그 변수를 설정할 함수 선언

0.8초의 최소 쿨타임을 가집니다

스킬카운트 변수를 선언

스킬이 끝나면 skillACount변수를 증가시켜 변수값으로 몇번째 공격인지를 판단합니다

증가된 카운트로 각각의 애니메이션과 알맞은 델리게이트를 호출합니다

쿨타임함수도 같이 호출해줍니다

 

최소 쿨타임이 적용되며 skillCount 값에 따라 알맞은 애니메이션이 나오는걸 확인할수있습니다

그러면 이제 호버링 상태일때 마우스를 처다보도록 하겠습니다

 

모션워핑 기술을 사용해서 해보겠습니다

모션워핑 기술은 전 글에 포스팅 해놨으니 궁금하신분은 확인해보세요

https://lucodev.tistory.com/25

 

Unreal - 모션워핑(Motion Warping)

현재 공격하거나 스킬을 사용하면 애니메이션이 나오는데애니메이션 도중 방향을 꺾을수가없다그래서 적이 지나갔는데도 애니메이션은 계속 나오니조작감도 별로고 너무 딱딱한느낌이 든다.

lucodev.tistory.com

기존 모션워핑 추가한 결과물


마지막 내려찍는 공격도 추가해보겠습니다

델리게이트를 추가하고 델리게이트 안에서는 내려찍는 애니메이션과 내려오는 AAimingSkillEndLaunch함수를 실행합니다
AAimingSkillEndLaunch함수입니다

움직임을 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
'Unreal5 프로젝트 다이어리' 카테고리의 다른 글
  • Unreal - 어색한 충돌 처리 해결하기
  • Unreal - 공중 공격 - (2)
  • Unreal - 모션워핑(Motion Warping)
  • Unreal - 넉백 날려보내기
lucodev
lucodev
커피와 노트북 그리고 개발
  • lucodev
    루코 개발테이블
    lucodev
  • 전체
    오늘
    어제
    • 분류 전체보기 (121) N
      • Unreal5 프로젝트 다이어리 (73)
      • Unreal5 프로젝트 다이어리2 (3) N
      • Unreal 팁 (8)
      • Unreal 디버깅 (8)
      • C++ 프로그래머스 다이어리 (21) N
        • Stack (3)
        • Hash (4)
        • Heap (2)
        • Sort (1) N
      • 코드 개인보관함 (8) N
  • 인기 글

  • 최근 글

  • 최근 댓글

  • 링크

  • 공지사항

  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 태그

    unreal 로딩
    unreal 모션매칭
    언리얼 비헤이비어트리
    언리얼 behavior tree
    unreal 시퀀스
    unreal sequence
    언리얼 look at
    언리얼 컷씬
    unreal loading
    언리얼 로딩
    언리얼 로딩창
    언리얼 behaviortree
    unreal look at
    언리얼 motionmatching
    언리얼
    unreal 컷씬
    언리얼 시퀀스
    언리얼 페이드 아웃
    언리얼 모션매칭
    언리얼 foot step
  • hELLO· Designed By정상우.v4.10.3
lucodev
Unreal - 공중 공격 - (1)
상단으로

티스토리툴바