전에 설계한 걸 바탕으로 Light 오브젝트와 Heavy 오브젝트를 움직이는 구현을 해보았다.
Pull 상호작용 시 Player의 주위를 공전하듯 붙어있어야 한다. 이때 마우스의 위치에 따라 오브젝트의 위치가 변한다.
Push 상호작용 시 마우스 위치로 던진다.
Pull 상호작용 시 Player의 xz 평면 이동에 따라 움직인다. 이때 Player는 y축 조작이 제한되고 xz평면 이동만 가능하다.
Push 상호작용 시 Object를 그 자리에 놓는다.
Actions
Pull Light / Pull Heavy / Push Light / Push Heavy
Conditions
is Pulling Light / is Pulling Heavy / is Pushing
States
Pull Light / Pull Heavy / Push Light / Push Heavy
+
Jump Ascending With Light / Jump Ascending With Heavy
저번에 설계했듯
All State -> Pull
Pull -> Push
Push -> All State
구조로 이루어진다.
이때 Light Object를 Pull 한 상태에서 점프를 구현하기 위해 Pull Light -> Jump Dis/Ascending With Light 를 추가한다.
문제점들
오브젝트들이 벽을 뚫음.
Light 오브젝트는 어차피 붙어다니니까 던질 때만 고려하면 해결 가능할 것 같음.
Heavy 오브젝트가 벽에 부딪히면 멈춰야 하는데 뚫어버림. Rigidbody로 하려니 잘 안됨. Player가 (1, 0, 0), (-1, 0, 0), (0, 0, 1), (0, 0, -1) 중에 어떤 방향인지를 인지하고 그 방향으로 잘 밀면 되려나.