본문 바로가기

Unity/루빅스 큐브 개발 일지

[Unity] 루빅스 큐브 층 회전 이론

요약

루빅스 큐브 층을 회전시킬 때는 삼각함수로 회전 공전과 자전을 적절히 해야 하는 것뿐만 아니라 큐브의 위치를 파악하는 Raycast의 방향도 신경 써야 한다. 특히 Raycast 방향이 회전하는 기준의 방향과 다른 층이라면 Raycast 순서를 바꾸거나 상대적으로 회전해야 한다. 하지만 하지만 이러한 복잡한 방법 말고 중심 큐브를 부모로 둔 주변 큐브를 활용한다면 더 간단히 해결된다. 해당 프로젝트는 Raycast의 순서를 바꿔 진행한다.


층 회전

루빅스 큐브 층을 회전시킨다는 것은 큐브의 위치를, 삼각함수를 통해 이동하는 것과 같다고 생각하였다.

하지만 이러한 방법을 사용하면 각 큐브가 공전을 하는것 뿐만 아니라 자전도 같이 해야한다는 사실을 깨닭았다.

하지만 이러한 방법을 사용하면 각 큐브가 공전을 하는 것뿐만 아니라 자전도 같이 해야 한다는 사실을 깨달았다.


서로 다른 층의 회전

큐브의 위치를 확인하는 방법으로 Raycast를 사용하였는데 Raycast를 사용할 때 주의해야 할 점이 있다.

Raycast를 통해 오브젝트를 확인할 때 Ray 방향이 회전축과 동일하지 않으므로 위와 같이 큐브를 인식하는 순서를 바꾸든지 회전하는 방향을 바꾸어야 한다.


간단한 방법

만약 중심 큐브를 부모로 설정하게 된다면 주변 큐브는 상대적인 크기, 회전, 이동 값을 가지게 될 것이다. 즉, 중심 큐브만 회전하면 다른 불편한 연산이 필요 없게 된다. 실제로 유니티에서는 transform.parent()로 부모 오브젝트를 설정할 수 있고, 코드를 통해 필요할 때만 부모로 설정할 수 있다. 해당 프로젝트는 Raycast의 순서를 바꿔 진행한다.