개요
현재 게임에 육각형 타일로 타일맵을 생성해야한다.
따라서 직사각형 타일에서의 좌표계가 아닌 육각형에 맞는 좌표계로 맵을 생성해야한다.
Hexagonal Grid에 대해 잘 정리해놓은 글이 있어서 해당 글에서 현재 프로젝트에 필요한 부분만 정리해보았다.
https://www.redblobgames.com/grids/hexagons/
Red Blob Games: Hexagonal Grids
Amit's guide to math, algorithms, and code for hexagonal grids
www.redblobgames.com
Geometry
정육각형을 배치하는 방법을 2가지이다.
- Flat-top orientation
- Pointy-top orientation
정육각형의 크기를 결정하는 방식도 2가지 이다.
- inner circle : 중심에서 변까지의 거리
- outer circle : 중심에서 꼭짓점까지의 거리
보통 outer circle을 기준으로 size를 정의한다.
Space
outer circle을 size로 하여 정육각형을 배치할 때 수평 거리와 수직 거리를 구하는 방법이다.
Flat-top 일때
horizontal Spacing = 3/2 * size
verticla Spacing = sqrt(3) * size
Pointy-top 일때
Flat-top과 반대다
vertical Spacing = 3/2 * size
horizontal Spacing = sqrt(3) * size
Cube Coordination
정육각형의 배치에서 좌표계의 종류는 아주 많지만 Cube Coordination를 사용하므로 이것만 정리한다.
축
q, s, r 총 3가지 축이 있다.
q + s + r = 0이라는 특징을 가지고 있다.
배치모양
Flat-top, Pointy-top 둘다 가능하다.
이웃찾기
cube_direction_vector에 해당하는 좌표를 더하면 이웃
거리
한 좌표에서 다른 좌표를 빼고 각 좌표의 절댓값을 /2 하면 거리가 나온다.
한 지점에서 범위에 해당하는 좌표 구하기
result는 해당 범위에서 좌표계에 있는 것만
비효율적이므로 다음 수식 사용
'The Wild Card 제작' 카테고리의 다른 글
[프로젝트 관리] 카드게임 - Issue 기반 칸반보드 관리 (0) | 2025.04.16 |
---|---|
[Unreal] 카드게임 - 게임 시작 선택 구현 (0) | 2025.04.16 |
[Unreal] 카드게임 - 멀티플레이 테스트 (0) | 2025.03.30 |
[Unreal] 카드게임 - 타일기반 행동 (0) | 2025.03.29 |
[Unreal] 카드 게임 Phase 만들기(feat. State Pattern) (0) | 2025.03.21 |