Unreal Engine Practice

Unreal Engine 4 Weapon(1)

Srff5123 2024. 1. 24. 17:25
728x90

Unreal Engine에서 무기를 뽑고 사용하는 방법

 

캐릭터의 ABP(Animation Blueprint)에서 무기를 뽑고 다시 넣기 위한 Animation먼저 설정을 해준다.

뽑기 처음 동작 - 뽑기 - BS(BlendSpace)이용한 Animation 검동작)  - 넣기 처음 동작 - 넣기

이런식으로 이루어지게 된다.

여기서 BS란 무엇인가.

 

BlendSpace의 약자로 축값에 따라 Animation들을 섞어서 사용할수있는 기능이다.

이 기능을 사용하여 1D(축 1개)를 사용하여 idle walk run을 Speed라는 축값 변수로 받아서 사용을하였다.

이번에는 축 두개( Direction과 Speed)를 사용할 것이기 때문에  1D가 아닌 위의 BlendSpace를 생성해준다.

생성을 한뒤 해당 기능에 들어가 디테일 패널을 보면 축의 변수이름과 최소 최대값을 입력해줄수있다.

Direction은 정면은 180도 뒤는 -180이기 때문에 최소는 -180 최대는 180으로 설정을 하여주고

또 하나의 축은 Speed로 가만히있는 상태 Idle을 0 ~ walk와 run 이기때문에 최대값을 600으로 설정을 하여준다.

 

Grid는 들어갈 수 있는 애니메이션의 숫자로 뒤 왼쪽 앞 오른쪽  뒤 순서이기때문에 4  세로축은 idle walk run 3개이다.

애니메이션같은 경우에는 Mixamo에서나 Unreal Engine의 Market Place에서 쉽게 다운로드할 수 있다.

자 이제 다시 본론으로 돌아와서 특정키를 입력하였을때 무기를 뽑아야 한다. 즉 입력키 설정을 해준다.

Unreal Editor의 왼쪽 상단의 편집창을 눌러 프로젝트 설정으로 간다. 다음 엔진의 입력키를 눌러

액션매핑과 축매핑에 키를 입력할 수 있다, Unreal Engine5에는 축매핑없이 액션매핑만 있기 떄문에 5같은 경우에는 따로 사용법이 있다. 

 

다음 이제 특정 키를 눌렀을때 해당되는 Animation이 나와야 한다.

내가 플레이할 캐릭터가 1을 눌렀을때 무기를 뽑을것이기 떄문에 

내 캐릭터의 움직임을 제어하는 BP내캐릭터에서 설정해준다. 

액션매핑에 설정해둔 이름을 BP에 검색하면 입력액션으로 나오게된다. 하지만 그냥 액션 하여 연결하면 키를 여러번 눌렀을 경우 칼을 계속 뽑는 모션이 나오는 버그나, 동작 중에 움직이는 그런 버그들이 있기 떄문에 이런 것들을 방지하기 위해 먼저 변수들을 만들어준다. 

bool변수로 제어를 할 것이다 (bool변수로 하는것보다 더 효율적이고 좋은 방법들이 많으니 여러 사람들의 것들을 보는것이 좋다)

움직임을 제어해줄 Can move변수(True로 설정)와 칼을 뽑는중이라는 Drawing, 칼을 다 뽑앗다는 Drawn, 칼을 넣는 중이라는 Sheathing

다음 해당되는 변수들의 상태를 넣어주기 위한 Custom Event를 설정해준다.

Equip Sword , Equipped Sword 칼 뽑기, 칼 뽑음

Sheath Sword, Sheathed Sword 칼 넣기, 칼 넣음

 

Equip Sword Event 즉 칼을 뽑을 때의 이벤트이다

칼을 뽑을경우에는 Drawing이 진행중이기에 True값을 Can move를 flase값 뽑는도중에 방향은 바꿀수잇도록

Use Controller Rotation Yaw의 값을 True로 , 하고 해당 위치값을 Character Movement로 Get하여 

Orient Rotation To Movement값에 Direciton값을 넣어준다.

 

다음 Equipped Sword는 칼을 뽑고 난후의 이벤트로

Drawing은 false , 다 뽑고 난 후이기에 can move는 ture, drawn도 ture로 준다.

 

다음 Sheath Sword와 Sheathed Sword 위와 마찬가지로 true false를 설정해준다.

이제 ABP로 이동하여 설정한 변수의 값에 따라 실시간으로 동작값을 넣어준다.

위는 Direction값을 얻는 상태이고 , 밑은 칼을 뽑고 넣는 상태이다.

 

이제 AnimGraph로 이동하여 변수의 상태에 따른 애니메이션 동작이 실행될수 있도록 설정해준다.

 

BS-Unarmed -> (Get Drawing) -> Draw_sword1 ->(TimeRemaing(ratio)(Draw_Sword_1)  - <= 0.3) -> Draw_sword2 -> (앞과 같음) -> BS_Sword -> (Get Sheathing) -> Sheath_Sword1 -> ( TimeRemaing(ratio)(Draw_Sword_1)  - <= 0.3 ) -> Sheath_Sword2 -> ( TimeRemaing(ratio)(Draw_Sword_1)  - <= 0.3 ) -> BS_Unarmed

 

TimeRemaing(ratio)(Draw_Sword_1)  - <= 0.3 은 Animation의 0.3만큼 남았을 때 넘기라는 함수이다.

이제 다음 다시 BP내캐릭터로 이동하여 Can move를 이용하여 MoveBlueprint에 끼워넣어 움직임을 막아준다.

 

이렇게 하면 칼을 뽑고 넣는 과정이 완성된다.

 

 

 

 

 

 

 

 

 

728x90