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— ダメージゾーン
タグはゲームプレイや衝突システムで解釈されます。