pyxen.GridMap
GridMap은 행과 열로 배열된 셀로 구성된 공간 컨테이너입니다.
타일 레이아웃, 셀 크기, 선택적 타일 아틀라스, GridBody를 위한 충돌 공간을 정의합니다.
충돌 개념은 충돌을 참조하세요.
생성자
GridMap(
*,
rows=None,
columns=None,
size=None,
image=None
)
모든 매개변수는 키워드 전용입니다.
매개변수
| 매개변수 | 타입 | 설명 |
|---|---|---|
rows | int | 그리드 행 수 |
columns | int | 그리드 열 수 |
size | (width, height) | 셀 크기 (픽셀) |
image | str | 타일 아틀라스 이미지 이름 |
예시
level_map = GridMap(
rows=10,
columns=16,
size=(16, 16),
image="tileset"
)
GridMap 첨부
생성 시:
level = world.spawn(
map=GridMap(
rows=10,
columns=16,
size=(16, 16),
image="tileset"
)
)
또는 나중에:
entity = world.spawn()
entity.map = GridMap(rows=8, columns=8, size=(16, 16))
속성
map.active
| 속성 | 타입 | 기본값 |
|---|---|---|
active | bool | True |
이 맵에 대해 충돌 시뮬레이션이 실행되는지 제어합니다. False이면 이 맵에 첨부된 GridBody에 대해 바디 이동, 충돌, 콜백이 처리되지 않습니다.
# 충돌 일시 정지 (예: 일시 정지 메뉴)
level.map.active = False
# 충돌 재개
level.map.active = True
타일 수정
map.set()을 사용하여 타일을 구성합니다.
map.set(
row=0,
column=1,
tile=(tile_column, tile_row),
tag=optional_tag
)
매개변수
| 매개변수 | 타입 | 설명 |
|---|---|---|
row | int | 그리드 행 인덱스 |
column | int | 그리드 열 인덱스 |
tile | (x, y) | 아틀라스에서의 타일 좌표 |
tag | int | 선택적 충돌 태그 |
예시: 타일 설정
level.map.set(
row=2,
column=5,
tile=(3, 1)
)
예시: 충돌 태그 추가
level.map.set(
row=4,
column=2,
tile=(0, 0),
tag=1 # 벽
)
그리드 좌표
- 행은 수직으로 증가
- 열은 수평으로 증가
범위 밖의 인덱스는 안전하게 무시됩니다.
GridMap + GridBody
GridBody는 GridMap과 상호작용하여 충돌, 이동 처리, 트리거 감지를 수행합니다.
GridBody는 GridMap 엔티티의 자식이어야 합니다.
level = world.spawn(
map=GridMap(
rows=8,
columns=8,
size=(16, 16),
image="tiles"
)
)
player = world.spawn(
body=GridBody(),
parent=level
)
최소 예시: 기본 레벨
level = world.spawn(
map=GridMap(
rows=8,
columns=8,
size=(16, 16),
image="tiles"
)
)
# 바닥 생성
for r in range(8):
for c in range(8):
level.map.set(row=r, column=c, tile=(0, 0))
# 벽 생성
for c in range(8):
level.map.set(row=0, column=c, tile=(1, 0), tag=1)
level.map.set(row=7, column=c, tile=(1, 0), tag=1)
태그
tag는 타일별 선택적 메타데이터입니다.
일반적인 용도:
0— 빈 공간1— 벽2— 물3— 데미지 존
태그는 게임플레이 또는 충돌 시스템에 의해 해석됩니다.