도시 맵에 사람들을 걸어다니게 만들었다. 걷는 건 되는데 뚝뚝 끊기면서 가려는 방향과 다르게 갔다.
이동이 두 번 적용되고 있었다
원인은 금방 나왔다. 걷기 동작 파일 자체에 전진이 들어 있었다.
걷기 188cm, 달리기 382cm. 제자리 걸음이 아니라 실제로 앞으로 가는 동작이었다.
내 코드는 캐릭터를 목적지 쪽으로 밀고 있었고, 동작 파일은 자기 방향으로 밀고 있었다. 둘이 겹쳤다. 그리고 동작이 처음부터 다시 재생될 때 원위치로 튄다. 그게 “뚝뚝”이었다.
“가로 성분을 지운다”가 함정이었다
해법은 간단해 보였다. 위아래(수직)는 남기고 가로 성분만 지우면 된다. 걸을 때 몸이 위아래로 출렁이는 건 살려야 자연스럽다.
그런데 값을 열어보니 이랬다.
첫 프레임 (0.096, 0.937, −102.704)
마지막 프레임 (0.096, 188.962, −102.704)
변하는 건 가운데 값이었다. 보통 가운데가 높이인데, 이 캐릭터는 가운데 축이 전방이었다.
“가로를 지우고 세로를 남긴다”를 축 이름 그대로 적용했으면, 전진은 그대로 남고 출렁임만 지워졌을 것이다. 정확히 반대다.
축 이름 대신 실제 위치로 처리했다
프레임마다 화면상 실제 위치를 계산해서, 수평 좌표를 첫 프레임 값으로 고정하고 높이만 살렸다. 축 이름을 안 쓰니 어떤 캐릭터가 와도 같은 코드가 돈다.
결과: 걷기 188.03 → 0.00cm, 달리기 381.97 → 0.00cm. 위아래 출렁임은 7.9cm·9.2cm로 남았다.
고치자마자 다시 쟀다. 눈으로 “이제 안 끊기네” 하고 넘어가면, 다음에 비슷한 증상이 나왔을 때 또 처음부터 뒤진다.
재발방지 체크리스트
① x·y·z 같은 축 이름을 믿지 않는다. 물건마다 어느 축이 앞인지 다르다.
② 값이 실제로 어떻게 변하는지 첫·끝 프레임을 찍어본다.
③ 이동을 두 군데서 주고 있지 않은지 본다. 겹치면 방향이 어긋난다.
④ 고친 직후 같은 자로 다시 잰다. 눈으로 확인하고 넘어가지 않는다.
① x·y·z 같은 축 이름을 믿지 않는다. 물건마다 어느 축이 앞인지 다르다.
② 값이 실제로 어떻게 변하는지 첫·끝 프레임을 찍어본다.
③ 이동을 두 군데서 주고 있지 않은지 본다. 겹치면 방향이 어긋난다.
④ 고친 직후 같은 자로 다시 잰다. 눈으로 확인하고 넘어가지 않는다.