저번에 만든 공중공격입니다
부족한게 많으니 여러가지를 더 추가해보겠습니다
공중에 뜨면 카메라가 더 넓은곳까지 볼수있도록 카메라의 위치를 변동해보도록 하겠습니다
outFov까지 InterpTo이동 으로 시점을 뒤로 당기고
점프할때 원하는 디폴트값90보다 큰 100 Fov값으로 변경되 시점이 넓어지고 하강할때 Fov가 원래대로 돌아와
자연스러운 카메라 시점을 연출할수있습니다
그러면 이제 날아갈 검기를 만들어보겠습니다
검기액터부터 만들었습니다
검격의 나이아가라 slashNA
루트컴포넌트가 될 씬 컴포넌트
그리고 움직일 속도 slashSpeed
움직일방향, 타겟방향, 마우스 방향벡터를 선언해줬습니다
씬컴포넌트밑에 나이아가라 컴포넌트를 붙힌뒤 ConstructorHelper로 할당해줬고
moveDirection과 targetDirection을 초기화해줬습니다
처음 BeginPlay에서 마우스의 위치를 가져와서 targetLocation에 저장합니다
slashActorLoc에 현재 위치를 계산한뒤
움직일 방향을 타겟에서 현재위치를 빼서 targetDirection에 넣어줍니다
newLoc의 계산방식은
등속도 직선 운동 공식을 사용하였습니다
p = p0 * vt 공식이며
p0는 현재위치 v는 속도 t는 시간입니다
slashSpeed는 초당 이동 거리이며 DeltaTime과 곱하여 프레임마다 이동할 거리를 계산합니다
그러면 마우스방향으로 p = p0 * vt 공식으로 이동합니다
검기를 발사할위치는 검이니 검 소켓을 만들어줍니다
프리뷰 메시로 나이아가라를 달아준뒤 정확하게 칼등에서 나가게 설정해줬습니다
이제 이 검기액터를 스폰할 함수를 만들어줍니다
위치는 소켓의 위치에서
GetSocketTransform함수로 SwordSlashStartSocket의 위치를 얻은다음 SpawnActor로 검기액터 인스턴스를 스폰시킵니다
그럼 이제 이 검격 액터와 오버랩할 콜리전박스를 만들어주고 오버랩 처리를 해주겠습니다
오버랩할 박스컴포넌트를 달아주고
오버랩된 대상의 이름을 GetName으로 otherName변수에 넣고
폭발은 적의 바닥에서 폭발하는게 시각적으로 좋다고판단해서 바닥에서만 폭발액터를 스폰시켰습니다
바닥에 닿으면 TSubClassOf로 참조한 대상인 explosionActor을 스폰
해당 액터는 콜리전 중앙을 기준으로 밖으로 밀어내는 콜리전액터입니다
그리고 케스케이드를 SpawnEmitterAtLocation함수로 스폰
또한 데이터테이블에서 값을 추가하고 해당값을 적에게 넘겨서 HUD로 데미지 출력을 해보도록하겠습니다
검격이 떨어진 위치에서 적을 밀어내는 액터가 스폰이되어 적을 넉백시키고 데이터테이블에서 받아온 원하는 데미지값을
잘 출력하는 모습을 볼수있습니다
해당 스킬은 각성폼일때만 사용가능하고 각성폼이 아닐때는 사용할수없도록 ui애니메이션을 추가해보도록 하겠습니다
컬러와 오파시티 그리고 스케일값을 변동하여 위젯애니메이션을 구성하였습니다
이제는 공격하는 위치범위 aoe를 적용해주고
공중에 계속 떠있으면 밸런스가 맞지않는거같다고 생각해서 스킬사용시 8초가 지나면 마지막 액션으로 강제로 넘어가게
상태스냅샷 기능을 구현했습니다
-1이란 수치는 게임플레이 중에 나오지않는수이므로
아직 스냅샷을 한적 없다 라는 의미를 가집니다
한마디로 안전장치같은 개념을 줄수있습니다
6초뒤에는 무조건 OnSkillEndSkillA함수가 호출이됩니다
그래서 공중에 있어도 처음 실행했을때 6초가 지나면 무조건 종료됩니다
a키를 누르면 스킬범위를 나타내는 데칼이 나오고
스킬처음실행 6초안에 아무런입력이없거나 6초가 지나면 무조건 마지막 액션이 나오고 범위데칼의값이 초기화되고
원래상태로 되돌아갑니다
그러면 6초라는걸 시각적으로 보여주기위해 위젯을 만들어봅시다
프로그래스바를 업데이트시켜줄 updateAProgressBar함수와
호출할때 필요한 StartProgressBarCoolDown함수를 만들어줍니다
프로그래스바가 1에서 0이될떄까지 0.02초 주기로 줄어들게하는 함수를 만들고
NativeConstruct에서
클릭할때 보이고 끝나면 다시 히든으로 바꿔보겠습니다
호출할때 6초로 프로그래스바 시간을 만들고 visible로 보이게합니다
공격이 끝나면 프로그래스바를 숨깁니다
그러면 이제 간단한 카메라 쉐이크와 소드트레일을 추가해주겠습니다
칼 검기액터는 컨트롤러에대한 정보를 아에 모르기때문에 캐스팅부터
캐스팅을 한뒤
이런느낌입니다
'Unreal5 프로젝트 다이어리' 카테고리의 다른 글
Unreal - 대쉬 공격 만들기 (Sweep 처리방식) (0) | 2025.04.22 |
---|---|
Unreal - 어색한 충돌 처리 해결하기 (0) | 2025.04.21 |
Unreal - 공중 공격 - (1) (0) | 2025.04.15 |
Unreal - 모션워핑(Motion Warping) (0) | 2025.04.12 |
Unreal - 넉백 날려보내기 (0) | 2025.04.11 |