개인 공부/C#

헥사곤 좌표계

smallship 2025. 9. 30. 00:34

헥사 매치업 게임을 개발할 때 사용한 스왑 로직이다.(그림판에 대충그렸었음...아무도 안볼줄알고..)  일반적인 직사각형과 달리 6방향 이동을 해야해서 아크 탄젠트를 사용하여 각도를 구해주었다.

angle = Mathf.Atan2(x,y) * Mathf.Rad2Deg; (라디안을 도 단위로 변환)

보드판이 이렇게 있다 가정하고 스왑을 해보면 짝수 홀수 열에 따라 변하는 값이 달라지게 된다.

보드판을 제작할때 홀수 열들의 위치를 최대 높이의 절반만큼 높였기 때문에 이런식으로 달라지는 것이다.

노가다로 일일이 직접 계산...

 

결과적으로 이렇게 코드를 짰다.

 

찾아보니 헥사 매치를 개발할때는 큐브 좌표계를 많이들 사용한다고 나와있다.

지금 방식은 2d 배열처럼 열과 행을 보드로 표현한것이고 큐브 좌표계는 헥사곤을 x,y,z 3축 좌표로 표현하여 더 단순해 진다고 한다. 다만 2d 보드 형태로 관리할 때는 변환이 필요하기 때문에 복잡도가 증가한다고 한다.

 

당시에는 큐브 좌표계 방식을 잘 몰라서 해당 방식으로 구현을 하였다. 나중에 큐브 좌표계 방식을 더 공부해서 리팩토링 해보는것도 좋을것같다.

'개인 공부 > C#' 카테고리의 다른 글

연결 리스트 (Linked List)  (1) 2024.07.26
스택, 큐  (1) 2024.07.26
델리게이트(delegate)와 이벤트 (event)  (1) 2024.07.26
추상 클래스  (0) 2024.07.26
튜플  (0) 2024.07.25