TraceLine에 익숙해지기 위해 발 아래에서 Trace를 해보자.
sin에 곱해지는 값을 20으로 변경해보면, sin값에 음수로 떨어질수록 바닥에 파묻히게 되는데, 이때에도 발은 지면에 고정하도록 변경해볼 것이다.
Sphere Trace By Channel노드를 생성해준다. 현재는 Sphere Trace밖에 없지만, 추후에 라인 혹은 박스 트레이스도 추가될 수 있을 것으로 보인다.
반복문에서 나온 각 foot본의 트랜스폼을 End에 연결해준다. end는 발의 타겟 로케이션이 된다.
Start엔 Foot본에서 50만큼 위에 위치하는 좌표로 연결해준다.
Trace노드의 HitLocation은 Hit이 발생한 좌표를 리턴하는데, 이를 BaseIk의 이동(Translate)에 연결해주면, 발이 땅에 닿았을 때, 지면에 붙고, 무릎과 종아리가 IK에 따라 굽혀지는 모습을 볼 수 있다.
하지만 올라가다 보면 무릎이 딸깍 하며 일자로 쫙 펴지는 이슈가 있는데, Sphere Trace는 아무것도 Hit하지 않으면 그냥 영벡터(0,0,0)을 리턴하기 때문이다.
따라서 다음과 같이 처리하여, Hit하지 않으면 기존 발 위치를 사용하도록 수정해준다.
인게임에서 플레이하면 다음과 같이 무릎이 구부러지는 모습을 볼 수 있다.
하지만 발이 바닥을 파먹고 있는 이슈가 있는데, 우리가 하는 트레이스가 foot본에서 이루어지는데, foot본은 발바닥이 아닌, 발목에 있기 때문이다.
따라서 이런식으로 발목과 발바닥 사이의 거리 오프셋을 주어 해결한다.
각각의 다리가 각각의 트레이스를 수행해, 한쪽 다리만 잘 구부러지는 모습도 볼 수 있다
하지만 지금은 IK를 일반 애니메이션과 조합하지 않을 것이므로, 트레이스를 삭제해준다.