보스가 플레이어를 잡아 들어 올리는 Grab 시스템을 구현하면서 두 가지 문제가 발생했습니다.
첫 번째는 보스와 플레이어가 서로 다른 위치에서 Grab 애니메이션을 재생하는 문제였고, 두 번째는 플레이어가 공격이나 스킬을 사용하던 중 Grab에 걸렸을 때 기존 액션 상태가 정상적으로 종료되지 않는 문제였습니다.
이번 글은 일반적인 Grab 시스템 제작 튜토리얼이 아닙니다. 실제 프로젝트에서 발생한 증상과 확인 과정, 그리고 현재 사용하고 있는 Blueprint 구조를 정리한 개발 기록입니다.
💡 한 줄 정답 — Grab 애니메이션의 위치와 방향은 Motion Warping의 GrabTarget으로 맞췄고, Grab 이전에 실행 중이던 스킬과 공격 상태는 Force Cancel Current Skill과 각 Power Action Closed 호출로 정리했습니다.
목차
- 보스 Grab 시스템에서 발생한 두 가지 문제
- 첫 번째 문제: 보스와 플레이어의 Grab 위치 불일치
- Grab 위치와 방향을 확인한 과정
- Motion Warping과 GrabTarget 적용
- 두 번째 문제: Grab 이후 공격과 스킬 입력 불가
- 기존 Power Action을 강제로 종료한 구조
- 현재 사용하고 있는 Grab 처리 구조
- 구현하면서 확인해야 할 부분
- 마무리
- 함께 보면 좋은글
- 참고사이트
보스 Grab 시스템에서 발생한 두 가지 문제
보스가 플레이어를 잡아 들어 올리는 Grab 시스템을 구현했습니다. 보스와 플레이어가 각각 Grab 애니메이션을 재생하도록 구성했지만, Grab 판정이 성공했다고 해서 전체 연출과 상태 처리가 바로 정상적으로 작동한 것은 아니었습니다.
실제 테스트 중 확인한 문제는 다음 두 가지였습니다.
| 구분 | 실제 발생한 증상 | 적용한 처리 |
|---|---|---|
| 애니메이션 위치 문제 | 보스는 들어 올리는 동작을 하지만 플레이어는 기존 위치에서 Grab 애니메이션만 재생 | Motion Warping과 GrabTarget 적용 |
| 액션 상태 문제 | 공격이나 스킬 사용 중 Grab에 걸리면 기존 액션 상태가 남음 | Force Cancel Current Skill과 Power Action Closed 호출 |
두 문제 모두 Grab 애니메이션을 재생하는 것만으로는 해결되지 않았습니다.
보스와 플레이어가 같은 위치와 방향을 기준으로 애니메이션을 실행하도록 만들어야 했고, Grab이 시작되기 전에 플레이어가 실행하던 액션도 별도로 정리해야 했습니다.
첫 번째 문제: 보스와 플레이어의 Grab 위치 불일치
Grab이 성공했을 때 가장 먼저 눈에 띈 문제는 보스와 플레이어의 애니메이션 위치가 맞지 않는 현상이었습니다.
보스는 아래에서 플레이어를 잡아 들어 올리는 애니메이션을 정상적으로 재생했습니다. 하지만 플레이어 캐릭터는 보스의 Grab 위치로 이동하지 않았습니다.
그 결과 플레이어는 기존에 서 있던 위치에서 Grab 애니메이션만 재생했습니다.
즉, 두 캐릭터의 애니메이션은 재생되고 있었지만 실제 월드 위치가 서로 맞지 않아 하나의 연결된 Grab 연출처럼 보이지 않았습니다.
당시 이 문제를 수정하면서 플레이어와 보스의 위치 및 방향을 맞추는 처리를 추가했습니다. 다만 최초 문제의 정확한 원인이 단순히 위치 변환이 없었기 때문이었는지는 현재 확실하게 기억하지 못합니다.
따라서 원인을 특정 노드나 설정 하나로 단정하기보다는, 당시 확인된 증상이 Grab 대상의 위치와 방향이 맞지 않는 상태였다는 점까지만 명확하게 정리할 수 있습니다.
Grab 위치와 방향을 확인한 과정
문제를 확인할 때 중점적으로 본 부분은 애니메이션 파일 자체보다는 실제 Grab이 발생하는 순간의 캐릭터 위치와 방향이었습니다.
보스 애니메이션은 플레이어를 아래에서 잡아 들어 올리는 동작을 수행하고 있었지만, 플레이어 캐릭터는 해당 동작이 시작되는 위치로 이동하지 않았습니다.
이 상태에서는 보스와 플레이어가 올바른 Grab 애니메이션을 사용하더라도 결과가 맞지 않습니다. 두 캐릭터가 서로 다른 위치를 기준으로 애니메이션을 재생하기 때문입니다.
당시 수정 과정에서는 다음 처리가 필요했습니다.
- Grab 대상 Actor의 위치 가져오기
- 플레이어와 대상 사이의 방향 계산
- Grab 애니메이션에 맞는 위치 Offset 적용
- 계산한 위치와 방향을 Motion Warping에 전달
- 애니메이션에서 사용하는 Warp Target 이름과 Blueprint의 이름 맞추기
정확한 최초 원인을 하나로 단정할 수는 없지만, 최종적으로는 위치와 방향을 계산해 GrabTarget에 전달하는 방식으로 구현했습니다.
Motion Warping과 GrabTarget 적용
현재 구현에서는 Motion Warping의 Add or Update Warp Target을 이용해 GrabTarget을 설정하고 있습니다.
Blueprint에서는 Grab 대상 Actor의 위치를 가져온 후 Find Look at Rotation으로 캐릭터가 바라볼 방향을 계산합니다. 여기에 Grab 애니메이션에 맞는 위치 Offset을 적용하고, 계산 결과를 Motion Warping의 Warp Target으로 전달합니다.
Epic Games 공식 문서에서 Motion Warping은 캐릭터의 Root Motion을 지정된 Target에 맞춰 동적으로 조정하는 기능으로 설명합니다. Montage에 설정한 Warp Target Name과 Blueprint에서 전달하는 이름이 연결되는 구조입니다.
현재 Blueprint 처리 흐름
- Grab 대상 Actor를 전달받습니다.
- 대상 Actor의 위치를 가져옵니다.
- 플레이어와 대상의 위치를 기준으로
Find Look at Rotation을 계산합니다. - Grab 애니메이션에 필요한 위치 Offset을 적용합니다.
- Motion Warping의
Add or Update Warp Target에 위치와 방향을 전달합니다. - Warp Target Name으로
GrabTarget을 사용합니다. - 이후 Grab 애니메이션을 실행합니다.
Find Look at Rotation은 Start 위치에서 Target 위치를 바라보는 회전값을 반환하는 노드입니다. 이 회전값을 이용해 Grab 애니메이션이 엉뚱한 방향으로 실행되지 않도록 방향을 맞췄습니다.

이미지 설명: 대상 Actor의 위치를 가져오고 Find Look at Rotation으로 방향을 계산한 뒤, 위치 Offset과 함께 Motion Warping의 GrabTarget으로 전달하는 실제 프로젝트 Blueprint입니다.
여기서 중요한 점은 Motion Warping을 사용했다는 사실만이 아닙니다. Grab 애니메이션이 어떤 위치와 방향을 기준으로 재생돼야 하는지 계산하고, 그 결과를 동일한 Target 이름으로 연결했다는 점입니다.
두 번째 문제: Grab 이후 공격과 스킬 입력 불가
두 번째 문제는 플레이어가 공격이나 스킬을 사용하던 중 보스의 Grab 공격에 걸렸을 때 발생했습니다.
Grab 애니메이션 자체는 실행되지만, Grab 이전에 사용하던 공격이나 스킬의 상태가 정상적으로 종료되지 않는 경우가 있었습니다.
과거에는 Grab이 끝난 뒤 스킬 버튼이나 공격 입력이 정상적으로 동작하지 않는 현상도 있었습니다. 기존 액션이 완전히 닫히지 않은 상태에서 Grab 처리가 이어지면서 플레이어의 다음 입력에 영향을 주는 형태였습니다.
다만 당시 어떤 Boolean이나 Do Once가 최종 원인이었는지는 현재 기억이 확실하지 않습니다. 따라서 특정 Boolean이 해제되지 않았거나 Do Once가 직접적인 원인이었다고 단정할 수는 없습니다.
현재 확인할 수 있는 것은 실제 Blueprint에 Grab 처리 과정에서 기존 스킬과 Power Action을 종료하는 구조가 들어가 있다는 점입니다.
기존 Power Action을 강제로 종료한 구조
현재 Blueprint에서는 Grab 처리 중 Force Cancel Current Skill을 호출해 실행 중인 스킬을 먼저 취소합니다.
그다음 플레이어의 Current Power Action 값을 가져오고 Switch on Int를 이용해 현재 실행 중인 액션에 맞는 종료 함수를 호출합니다.
| Current Power Action | 호출되는 처리 |
|---|---|
| 1 | Power Action 1 Closed |
| 2 | Power Action 2 Closed |
| 3 | Power Action 3 Closed |
이 구조는 Grab이 발생하기 전에 플레이어가 어떤 Power Action을 실행하고 있었는지 확인한 뒤, 해당 액션의 종료 처리를 직접 호출하는 방식입니다.
단순히 Grab Montage로 애니메이션을 전환하는 데서 끝내지 않고, 기존 액션 시스템이 사용하고 있던 상태도 함께 정리하도록 구성했습니다.

이미지 설명: Grab 처리 과정에서 Force Cancel Current Skill을 호출하고, Current Power Action 값에 따라 Power Action 1 Closed, Power Action 2 Closed, Power Action 3 Closed를 실행하는 실제 Blueprint입니다.
이 Blueprint를 기준으로 보면 Grab은 별도의 공격 하나를 실행하는 기능이 아니라, 플레이어가 수행 중이던 액션을 중단하고 Grab 상태로 전환하는 처리까지 포함하고 있습니다.
현재 사용하고 있는 Grab 처리 구조
현재 프로젝트의 Grab 처리는 크게 위치 정렬과 액션 상태 정리로 나눌 수 있습니다.
1. Grab 애니메이션 실행 전 위치와 방향 설정
Grab 대상 Actor의 위치를 가져온 뒤 Find Look at Rotation으로 방향을 계산합니다. 여기에 위치 Offset을 적용하고 Motion Warping의 GrabTarget으로 전달합니다.
이 처리는 보스와 플레이어가 서로 떨어진 위치에서 각자의 Grab 애니메이션만 재생하는 문제를 줄이기 위해 사용하고 있습니다.
2. 실행 중인 스킬 강제 취소
플레이어가 스킬을 실행하던 도중 Grab에 걸릴 수 있으므로 Force Cancel Current Skill을 호출합니다.
3. Current Power Action 확인
플레이어의 Current Power Action 값을 확인해 Grab 직전에 실행 중이던 액션을 구분합니다.
4. 해당 Power Action 종료
Switch on Int를 거쳐 현재 값에 맞는 Power Action Closed 함수를 호출합니다.
5. Grab 상태로 전환
기존 액션을 정리한 뒤 보스와 플레이어의 Grab 관련 애니메이션 및 후속 처리를 진행합니다.
이처럼 현재 구조에서는 애니메이션 위치 보정과 플레이어의 액션 상태 초기화를 서로 다른 문제로 보고 각각 처리하고 있습니다.
구현하면서 확인해야 할 부분
이번 문제를 통해 Grab처럼 두 캐릭터가 하나의 연출을 만드는 기능에서는 애니메이션 재생 여부만 확인해서는 부족하다는 점을 알 수 있었습니다.
애니메이션 위치 확인
- 보스와 플레이어가 같은 Grab 지점을 기준으로 움직이는가?
- 플레이어가 기존 위치에서 애니메이션만 재생하고 있지는 않은가?
- Grab 시작 순간 두 캐릭터의 방향이 맞는가?
- 위치 Offset이 현재 Grab 애니메이션과 맞는가?
- Montage의 Warp Target Name과 Blueprint의 이름이 일치하는가?
액션 상태 확인
- Grab 전에 실행 중인 스킬이 취소되는가?
Current Power Action값이 정상적으로 확인되는가?- 각 Power Action의 종료 함수가 호출되는가?
- Grab이 끝난 뒤 공격과 스킬 입력이 다시 동작하는가?
특히 입력이 막히는 문제가 발생한다면 특정 Boolean이나 Do Once를 바로 원인으로 단정하기보다, Grab 이전 액션의 시작부터 종료까지 실제 실행 흐름을 확인하는 편이 좋습니다.
이번 프로젝트에서도 과거에 Grab 이후 입력이 동작하지 않는 현상이 있었지만, 정확히 어떤 변수나 노드가 최종 원인이었는지는 현재 확실하게 기억하지 못합니다. 확인되지 않은 내용을 원인으로 기록하지 않고, 현재 Blueprint에서 확인되는 종료 처리 구조까지만 정리했습니다.
마무리
보스 Grab 시스템을 구현하면서 발생한 첫 번째 문제는 보스와 플레이어의 Grab 애니메이션 위치가 서로 맞지 않는 현상이었습니다.
당시 위치와 방향을 맞추는 처리를 추가했고, 최종적으로 대상 Actor의 위치와 Find Look at Rotation으로 계산한 방향, 위치 Offset을 Motion Warping의 GrabTarget에 전달하는 구조를 사용했습니다.
두 번째 문제는 공격이나 스킬 도중 Grab에 걸렸을 때 기존 액션 상태가 정상적으로 끝나지 않는 현상이었습니다. 현재 Blueprint에서는 Force Cancel Current Skill을 호출한 뒤 Current Power Action 값에 따라 각 Power Action Closed 함수를 실행하고 있습니다.
Grab처럼 강제로 다른 상태로 전환되는 기능을 구현할 때는 다음 두 가지를 함께 확인해야 합니다.
- 두 캐릭터의 애니메이션 기준 위치와 방향
- Grab 이전에 실행되던 공격 및 스킬 상태의 종료 여부
이번 글은 완전히 새로운 Grab 시스템을 만드는 방법이 아니라, 실제 프로젝트에서 발생한 문제를 수정하며 현재 사용하게 된 구현 구조를 기록한 내용입니다.
함께 보면 좋은 글
기존 OSWorlds 글 중 아래 주제와 연결하면 글의 흐름이 자연스럽습니다.
권장 내부 링크 문장 예시
보스가 플레이어를 잡을 수 있는 거리와 대상을 판정하는 과정은 기존에 작성한 언리얼 엔진 Collision 및 Trace 설정 글도 함께 참고할 수 있습니다.
참고사이트
- Epic Games 공식 문서 – Motion Warping in Unreal Engine
- Epic Games 공식 문서 – Add or Update Warp Target from Location and Rotation
- Epic Games 공식 문서 – Find Look at Rotation
- Epic Games 공식 문서 – Unreal Engine Blueprint API Reference
※ 참고 문서는 Motion Warping과 Blueprint 노드의 기능 확인을 위해 사용했습니다. 본문의 문제 증상과 적용 과정은 실제 프로젝트 경험을 기준으로 작성했습니다.