pyxen.GridBody
GridBody는 GridMap과 상호작용하는 그리드 기반 충돌 컴포넌트입니다.
충돌 개념은 충돌을 참조하세요.
생성자
GridBody(
*,
pos=None,
size=None,
move=None,
tag=None,
mask=None
)
모든 매개변수는 키워드 전용입니다.
매개변수
| 매개변수 | 타입 | 설명 |
|---|---|---|
pos | (x, y) | 초기 위치 (픽셀) |
size | (w, h) | 바디 크기 (픽셀) |
move | (x, y) | 이동 벡터 |
tag | int | 바디 태그 |
mask | (int, …) | 충돌할 타일 태그 튜플 |
예시
e = world.spawn(
name="hero",
sprite=sprite,
layer=LAYER_HERO,
body=GridBody(
pos=(64, 64),
size=(16, 16),
move=(0, 0),
tag=TAG_PLAYER,
mask=(TAG_WALL, TAG_MONSTER)
)
)
GridBody 첨부
spawn() 시:
player = world.spawn(
body=GridBody(pos=(32, 32), size=(16, 16))
)
또는 나중에:
entity = world.spawn()
entity.body = GridBody(size=(16, 16))
속성
move
튜플 또는 Vector2i로 이동 벡터를 설정합니다:
body.move = (1, 0)
move를 읽으면 Vector2i를 반환합니다:
m = body.move
print(m.x, m.y)
예정된 속성
| 속성 | 설명 |
|---|---|
pos | 바디 위치 |
size | 바디 크기 |
tag | 바디 태그 |
mask | 충돌 마스크 |
태그 시스템
tag
각 바디에는 하나의 태그가 있습니다:
body.tag = TAG_PLAYER
mask
마스크는 이 바디가 충돌할 태그를 정의합니다:
body.mask = (TAG_WALL, TAG_MONSTER)
GridBody + GridMap 상호작용
GridBody는 GridMap의 타일 및 다른 GridBody와 태그 필터링을 기반으로 충돌합니다.
충돌이 처리되려면 GridBody가 GridMap 엔티티의 자식이어야 합니다.
이동 예시
body = player.body
if input.keyboard.left.down:
body.move = (-1, 0)
if input.keyboard.right.down:
body.move = (1, 0)
최소 설정
level = world.spawn(
map=GridMap(
rows=10,
columns=10,
size=(16, 16)
)
)
player = world.spawn(
parent=level,
body=GridBody(
pos=(16, 16),
size=(16, 16),
tag=1,
mask=(2,)
)
)
일반적인 패턴: 플레이어 vs 벽
TAG_PLAYER = 1
TAG_WALL = 2
player = world.spawn(
body=GridBody(
pos=(32, 32),
size=(16, 16),
tag=TAG_PLAYER,
mask=(TAG_WALL,)
)
)
타일이 다음과 같이 설정되면:
map.set(row=0, column=5, tag=TAG_WALL)
플레이어가 해당 타일과 충돌합니다.