초보 코린이의 성장 일지

UE4 파쿠르 Climb, Slide 동작 본문

언리얼

UE4 파쿠르 Climb, Slide 동작

코오린이 2023. 2. 14. 12:44

파쿠르 동작 중 2가지를 다뤄볼 것이다.

Climb는 끝이났지만 다시 움직이지 못하는 상황이 발생하여 예외처리를 해줘야한다.

 

사용 할 함수 및 변수 추가한 상태

 

AN_EndParkour

1. 모든 파쿠르 동작을 종료 할 수 있는 노티파이 End_Parkour를 하나 만들어준다.

1. 만들어 놓은 노티파이를 끝에 추가해서 끝내기

End_DoParkour

1. 파쿠르 타입에 대한 스위치 문을 동작별로 확인하기 위해 돌려준다.

2. 공통적으로 종료되어야하는 것도 있기 문에 카메라는 꺼준다.

3. Current Type를 다시  Max로 돌려주고, State를 Idle로도 돌려준다.

4. Climb 모드라면 Movement를 Walking로 다시 돌려준다.

 

그럼 이제 Walking 처리를 했기 때문에 벽을 타고 올라가고나서 걸어 다닐 수 있게 변한다.

 

DoParkour_ClimbMode

애니메이션이 앞으로 가긴 하지만 올라갈 수 있는 위치가 살짝 빗겨있으면, 그걸 옮겨주고 정면을 바라보도록 회전을 시켜 줄 것이다.

1. Rotation으로 회전을 먼저 핀분활한 후 Yaw축을 처리해준다.

2. 위치도 동일하게 처리해준다. 

3. 두개가 끝이나면 이제 올라가기전에 몸이 조금 틀어져있어도 보정이 되었으므로, 벽에서 몸을 돌리고 앞에 붙인 후 들어가게된다.

 

1. 이제는 꼭대기에서 떨어질때 구르는 동작을 해볼 것이다.

2. 판단 조건은 캐릭터 앞에 보이는 아래를 향하는 노란색 화살표를 기준으로 떨어질때, 수직으로 아래로 선을 그으면 어딘가 닿게 되어있다. 그때 최초 지점이 만들어지며, 길이가 만들어진다. 그러면 추락시 위에서는 아래까지에 높이가 나온다.

CheckTrace_Land 앞 부분
CheckTrace_Land 뒷 부분

추락 중인 상황을 체크해 줄 것이다.

1. 추락 중인지 Falling로 조건 확인, 추락 중이라면 최초 한번만 기록하기 위해 기록후 false로 꺼줘야한다 안그러면 계속 추락지점 판단한다.

2. Arrow Component에서 Land를 가져와 Arrow에 저장해주고, 색상도 저장해준다.

3. 추적할 위치를 결정하기 위해, WorldTransfrom을 선언 후, 추적을 시작할 위치는 핀분활 후 Start에 연결

4. 방향은 Rotation으로 Forward로 정해준다. 얼마만큼 길이를 쏠것인지는 Data와 * 해서 확인해준다. 그럼 추적 거리가 나오게된다.

5. 그리고 그 값을 Start와 + 해주고 End에 연결해주면 추적할 마지막 위치가 나오게된다.

6. 이제 리터럴 열거형을 가져와 기록해준다.

7. Set Array Elem에 해당 위치를 저장해준다.

이벤트그래프 Tick 추가

1. Tick에서 이제 콜해주면 올라가서 내려 올 때 최초지점이 표시되면서 기록된다.

 

떨어진 최초지점이 노란색으로 표시되어 남아있다.

 

DoParkour_Land

1. 현재 모드가 땅에 떨어져서 닿았을때를 지점으로 몽타주 실행하게 조건 검사

 

1. 땅에 떨여졌을때를 바로 감지하는 이벤트를 사용해서 구르도록 콜해준다.

 

다시 ParkourComponent로 돌아와서

Check_FallMode

1. Falling를 켜놨으니까 true인지 확인 후 다시 false로 만들어준다.

2. Data와 Type를 가져와서 비교를 해 줄 것이다.

3. Hit된 거리가 Min 거리보다 크면 콜하도록 만들었다.

 

1. 이제 떨어질때 구르도록 만들기 위한 몽타주 생성 및 노티파이를 추가해준다.

이벤트그래프 아래 시퀀스1번 추가된 부 분

1. Is Falling 중이라면 Set에 연결

AnimGraph

1. 떨어질때 어색한걸 방지하기 위해 계속 떨어지는 모션으로 만들 것이다.

2. 자연스레 섞여서 들어가도록 bool로 조건문 처리

 

 

이제는 구르기도 자연스럽게 나온다. 이제는 슬라이드를 만들어 볼 것이다.

발 끝에 표시된 화살표 기준으로 Box를 크게 그릴 것이다. 그 Box를 기준으로 닿지 않으면 슬라이딩을 할 수 있게 처리해볼 것이다.

 

 

Do_Parkour 뒤에 추가한 부분

1. Slide 모드를 만들어서 조건 체크를 해준다.

 

Check_SlideMode 앞 부분

 

Check_SlideMode 뒷 부분

1. Box로 체크하고, 조건식을 다른 파쿠르처럼 닿으면 안되므로 false로 반대로 뒤집어 준다.

2. false 수행 할 필요가 없고, true라면 체크할 공간을 만들어줘야한다 이 부분이 어렵다.

3. 표시해줄 색을 저장하고, GetWorldLocation을 통해 Box를 만들어 줄 것이다. 방법은 Location과 부피랑 더해주고, 부피만큼 올렸기 때문

4. 전방으로 선을 쏠 것이다. 일자로 Box를 쭈욱 날려서 길이를 만들 것이기 때문에 Z축은 사용하지 않는다.

5. 이제 부피와 거리를 더 해주고 End 지점에 연결해주면 박스가 길게 형성된다. 또 한 Z축은 사용하지 않기 때문에 높이는 동일하다.

6. 회전은 ActorRotation으로 Orientation으로 연결해준다.

7. Not으로 return 해야한다. 이유는 충돌이 되면 안되기 때문

 

 

해당 박스가 나와서 조건은 판단해준다.

1. 몽타주를 생성해주고, 노티파이 설정해준다.

DoParkour_SildeMode

1. 슬라이드 모드를 위해 몽타주 실행만 해주면 된다.

2. 그리고 몽타주를 실행 후 Hit Obstacle를 Backup에 저장해놓고, Collision으로 연결해준다. 

3. 슬라이드를 할때 충돌체를 껏다 켜줘야 한다. 안그러면 관통 불가능

 

 

https://www.youtube.com/watch?v=fUETwl-_MkU 

 

- 구조가 어렵다

Comments