오늘은 FPS, TPS(서든어택, 오버워치 등) 장르의 게임에서 피격을 당하는 상황에 대해 'Unreal' 기준으로 분석해 볼게요.
1. Line Trace
FPS, TPS 게임에서 총알의 발사지점이 어디인지 알고 계신가요? '당연히 총구 아닌가?'라고 생각하시는 분들이 많을 거예요. 실제로 그런 게임들도 많이 있습니다. 하지만 오늘은 '라인 트레이스'라는 기능을 사용해 총구가 아닌 '카메라'가 총알의 발사 시작점이 되는 상황에 대해서 분석 해볼게요.
우선 총알의 발사 시작점이 총구인 상황과 카메라인 상황. 이 2가지 상황이 도대체 어떤 다른점을 가지는지 부터 짚고 넘어갈게요.
총구
발사 시작점이 총구인 경우에는 플레이어 시점이 총구와 정확하게 일직선이 되는 상황(ex. 1인칭 FPS 에서의 정조준 상황)이 아니고서는 Aim이 어늣나게 되어 있어요. 이게 무슨 말이냐면 플레이어 시점(카메라가 바라보는 각도)에서 적을 정조준 하고 있다고 가정해 봅시다. 이 상황은 총구에서의 시점이 아닌 게임을 플레이 하는 여러분의 시점에서 정조준을 하고 있기 때문에 격발 시 총구에서 발사되는 총알은 정조준하고 있는 물체에 카메라와 총구 거리만큼의 오차가 생긴채로 날아가게 돼요. 또한 그 앞에 다른 장애물이 있다면 그 장애물에 맞게 되겠죠. 이처럼 총구가 총알의 발사 시작점이 되면 이런 문제들이 발생하게 돼요.
카메라
다음으로 총알의 발사 시작점이 카메라인 경우를 살펴볼게요. 방금과 마찬가지로 플레이어가 바라보는 시점에서 일직선상의 타겟을 정조준하고 있다고 생각해봐요. 그 상태에서 격발을 하면 카메라의 위치에서 총알이 날아가고 되고 정확히 일직선의 경로를 그리며 타겟으로 발사되겠죠? 이렇게 카메라에서 총알이 발사가 되면 플레이어가 의도한 대로 정확한 조준과 경로가 완성되게 돼요.
라인 트레이스가 뭔가요?
제가 지금까지 총알의 발사 시작점에 대해서 먼저 설명 드린 이유는 '그래서 라인 트레이스가 무엇이고, 왜 필요한지에 대해서 설득력을 높이기 위함' 이예요. Unreal 에서 라인 트레이스의 기능에 대해서 하나씩 설명드릴게요. '직선상의 콜리전 트레이스를 수행하여 트레이스에 히트한 첫 번째 오브젝트를 반환' 하는 거예요.
더 자세하게 설명 드릴게요.
- Start에는 라인 트레이스 발사 시작 위치(카메라의 시작위치)를 넣으면 돼요.
- End에는 라인 트레이스를 발사할 끝 위치를 넣으면 돼요.(카메라 시작위치 + (카메라 정면 방향 x 발사거리))
- Trace Complex는 복합 충돌, 단순 충돌 여부예요.
- Draw Debug Type은 Hit 되었을 때 그려지는 Debug 라인에 대해서 설정하는 거예요.
- Ignore Self는 자기 자신을 무시할지에 대한 여부예요.
2. 카메라(피격 시 카메라 떨림 등 디테일 추가)
라인 트레이스에 대해 모든 설정을 마쳤다면 피격 시 카메라 떨림 등 더 다양한 디테일을 추가할 수 있어요. 피격을 당했다면 캐릭터 카메라 블루프린트에 약간의 무브먼트를 추가해 살짝 떨리는 코드를 추가할 수 있어요.
3. 총기 데미지
총기마다 데미지도 다르면 더욱 재미있겠죠? 데이터 테이블을 이용해서 각 총기들의 이름과 데미지를 설정해 줄 수 있어요. 따라서 어떤 총기에 피격 당했는지를 파악하고 피격당한 대상에게 그 총기의 데미지에 해당하는 수치만큼 HP를 감소 시킬 수 있어요.
이상으로 오늘의 게임 분석을 마무리할게요. 끝까지 읽어주셔서 감사해요.
'Unreal > BluePrint' 카테고리의 다른 글
블루프린트로 간단한 이동식 플랫폼 게임 만들기 (3) | 2024.12.21 |
---|---|
블루프린트를 이용한 비주얼 스크립팅 (0) | 2024.12.18 |