언리얼/언리얼 노트
[UE5] 대쉬 기능 만들기
mxxjx
2024. 12. 18. 22:42

전체 스크린샷
launch character 노드로 더블 점프를 구현하는 것에서 아이디어를 얻어 구현했다.
내가 구현한 대쉬는
- 플레이어가 정지해 있는 경우 플레이어가 보는 방향으로 빠르게 이동
- 플레이어가 이동중인 경우 플레이어가 이동중인 방향으로 빠르게 이동
- Z축 이동에는 영향을 끼치지 않음
위 기능을 가지고 있다.
위 블루프린트는 다음과 같은 흐름을 가진다.
1. 플레이어의 상태(정지, 이동) 확인
- Get Velocity 노드 사용
- Vector Length 노드를 사용한 값과 0을 비교, Boolean으로 정지한 경우와 이동중인 경우를 나누어 각각 구현
2. 플레이어가 정지해 있는 경우
- Get Actor Forward Vector 노드를 사용
- 일정값을 곱하여 Launch Character 노드에 연결하여 플레이어가 보는 방향으로의 대쉬를 구현
3. 플레이어가 이동중인 경우
- Get Velocity 노드를 사용, 이 중 z값만 0과 비교하여 수직이동이 이루어지는지 확인
- Boolean으로 수직이동이 없는 경우(=플레이어가 지면에 있는 경우)와 수직이동이 포함된 경우(=플레이어가 공중에 있는 경우)를 나누어 각각 구현
4. 플레이어가 지면에 있는 경우
- Get Velocity 노드로 구한 값을 Split
- Z값을 0으로 한 Velocity를 Make Vector을 사용하여 생성
- Normalize 노드를 사용하여 이동 방향을 하고 일정값을 곱함
- 4-3의 값을 Launch Character 노드에 연결, 플레이어 이동방향으로의 대쉬를 구현
5. 플레이어가 공중에 있는 경우
- 4-3 이후 Clamp 노드를 사용해 이동 속도의 최대값을 정함
※플레이어가 공중에 있는 경우에는 대쉬 속도가 너무 빠르고 이동 거리가 길어져 위와 같은 방법으로 제한을 두었음