2026.01.19

박민재 (Daype)·2026년 1월 19일

6축이동 및 회전 드론구현하기

WSAD 키를 이용하여 앞 뒤 좌 우로 움직이고, Shift
하강 SpaceBar 상승, 마우스 2D 동작을 통해 상하좌우로 회전 휠다운 업을 통해 기울기회전 하는 드론을 구현한다. 기존에 구현했던 방식에서 동작이 하나씩 추가된버전이다.

우선, InputAction 은 기존 그대로 사용할것이지만 기존에는 2D Value로 움직임을 받아왔지만 상승 하강과 기울기는 축이 하나씩 더 생겼기 때문에 3개의 축값을 받아주어야 한다. 때문에 3D값으로 받아오는 값을 변경해준다.

이제 해당엑션에서 3차원축값을 받아올 수 있게되었고, 해당 축값을 받아올 동작을 추가해주기 위해 IMC에서 늘어난 축의 키를 바인딩 해준다.

키를 바인딩 한 후 코드를 추가해준다.

기존엔 Vector2D 형식으로 받고있었지만 3D로 다받을것이기에 수정해준 후 Move 같은경우 UpVector를 활용해 값이들어오면 로컬기준으로 엑터가 위로 움직이게된다. 이후 회전은 값이들어오면 FRotator 같은경우 Pitch Yaw Roll YZX 의 순서라 다르기 때문에 맞게 작성해준다.

트러블슈팅 해결

코드를 작성해서 완성하는것은 많은시간이 걸리지 않았다 다만, 작동하는과정에서 축관련된 문제때문에 굉장히 많은 시간을 소요하게되었다.

기존에 알고있던 Swizzle 개념은 들어오는 값의 축을 재배치한다고 알고잇었다 때문에 Space에 값이 들어오면 보이는것처럼 Z에 값이들어가 상승하게되는것으로 알고 있었다.

Swizzle 옵션을 보면 ZXY라고 Z가 앞에오는 설정이 하나가 더있는데 그래서 내 생각에는 저것도 똑같이 위로가는 동작을 해야한다고 생각했다. 그러나 ZXY로 설정한결과 전혀다른결과가 나와서 놀랐다. 위로가지않고 옆 우측으로 이동을 하는것이었다. 해당상황을 이해하는것이 너무 어려워서 swizzle의 개념이 부족하다고 생각했다 때문에 Swizzle 개념에대해 다시 공부해보았는데,

IA에서 3D로 값을 받는다고 하더라도 IMC상에서 키를 바인딩한 후 실제동작을 확인해보면
W를 누르든 D를 누르든 SpaceBar를 누르든 전부 (v,0,0) 으로 1D형태로 값이 입력된다. 여기서 Swizzle 로 축 재배치를 하게될경우 ZXY 라고 예를들었을때 Zv가 할당되는것이 아니라 XYZ의 기본형태는 유지하면서 ZXY의 값을 넣는것이다 즉, 우리가 입력한 (v,0,0)ZXY Swizzle에 의해 (0,v,0) 으로 변환되는것이고 이상태로 C++ 코드에서 XYZ의 형태로 값이 들어가게 되는 것이었다. 결과적으로 Y쪽에 v만큼 값이 할당되는것이다 그래서 옆으로 움직였던것이다. 해당 개념을 이해하고나니 결국 제공하는 값은 x값이기 때문에 ZXY 는 옆으로 이동하고 ZYXZ에 값이 할당되어 위로 움직인다는것을 깨달았다.

느낀점

생각보다 쉬운데? 라고 생각하면서 수월하게 코드를 작성해나갔던것같다 하지만, 엔진시스템을 이용하면서 개념을 제대로 알지못했던 문제가 생긴것이라고 생각한다. 실제로 처음부터 되는축을 한번에 골랐더라면 잘못된 지식을가지고 앞으로 Swizzle 시스템을 이용했을것이라는 생각이 강하게 들었다. 이번에 비록 이해하는데 많은시간이 걸렸지만 나에게 있어서는 매우 헷갈리기 쉬운 내용이었고 그 시간이 걸린만큼 개념을 확실하게 정리 할 수 있었다.

0개의 댓글