Inverse Kinematic animation 만들기
- 지난 학기 수업에서 개념만 간단하게 배웠던 Inverse Kinematic 시스템을 Unity에서 직접 만들어 보고 어떤 요소를 고려해야할 지 고민한 부분을 기록하고자 한다.
참고 영상
https://youtu.be/hbgDqyy8bIw?si=Td_2GO6HdAuv7Swe
- 해당 영상을 따라해보며 영상에 나온 내용을 Unity에 적용하고자 하였다. 본질적인 부분은 크게 다르지 않기때문에 실제 화면상에 표현하는 부분에서만 Unity에 적합하도록 바꾸었다.
개발일지 #3
4. 전체 구조가 마우스를 따라 이동
- 지난 시간 문제가 발생했던 부분은 모두 해결되었다. 문제가 발생한 원인은 Point를 계산하는데 사용하고 새로운 위치로 갱신할 때에 지속적으로 Point가 바뀌고 계산되고 하는 과정에서 문제가 발생했던 것으로 보인다. 따라서 결국 계산에 사용하는 벡터를 따로 만들고 이 값만 Point에 적용하도록 하였다.
dir = targetPos - point;
Vector2 normalizedDir = dir.normalized;
Vector2 inverse_dir = normalizedDir * len;
Vector2 new_point = dir - inverse_dir;
- 의도했던 대로 끝 점이 목표지점을 향하도록 하는 데에는 전과 유사하다. 목표지점으로 향하는 벡터를 방향벡터만 남기고, 이를 양 끝점의 거리만큼 곱해 만든 벡터를 기존 목표지점으로 향하는 벡터에서 뺀 위치가 시작 점의 위치가 되도록 하는 것이다.

- 빨간 점이 목표지점이며 전체 구조가 이를 잘 따라오는 것을 확인할 수 있다.

- 동일한 구조를 하나 더 만들어 이 앞선 Segment의 시작점을 새로운 Segment의 끝점이 향하도록 설정하였으나 우리가 원하는 자연스러운 움직임은 아니었다. 이를 위해서는 일정 범위의 변화 내에서는 회전 또는 따라오는 것을 제한하는 조건이 필요할 것으로 보인다.