コンテンツにスキップ

DaiconMap

daicon-map.png

これは TileMapLayers のセットであり、順番にあなたの環境のレイヤーである。

このような各レイヤーは一意の z-index を含み、これは空間におけるそのレイヤーの高さの尺度です。言い換えると、z-ソート は、そのインデックスに基づいて、変更可能な Z 軸上にオブジェクトを配置します。


パラメーター:

- grid_map

GridMap

DaiconMapコア。


- cells_count

int

立体的なタイルの数。


- mesh_library

MeshLibrary

3D環境を構築するメッシュのライブラリ。


- physics_material

PhysicsMaterial

個々のタイルの摩擦や弾性などの物理的特性を測定するために使用される。


- z_step

int

Zステップは、高さレベル間のソートシステムにおけるステップです。

例えば、z_step = 10の場合、次のように設定されます:

レベル -1 = -10 レベル 0 = 0 レベル 1 = 10 レベル 2 = 20


- size

Vector3

メートル単位の立体タイルの大きさ。


- layer

int

grid_map のコリジョンレイヤー。


- mask

int

grid_map のコリジョンレイヤー。


- bake_navigation

bool

3D用のナビゲーショングリッドを焼く。


方法:

- _ready

各起動時にカーネルをデプロイする。ノードの基本設定を行います。


- _process

エディターでのみ動作します。

3Dタイルの数が2Dタイルの数と等しくない場合に grid_map を更新する(update_grid_mapを呼び出す)。

2Dのノードの動きと3Dのコアの動きを同期させる。


- get_cells

3D環境で使用されている3Dタイルの数を返します。

func get_cells() -> int:
    _cells_count = 0
    for layer_index in range(0, get_layers_count()):
        _cells_count += len(get_used_cells(layer_index))
    for layer in get_children():
        if layer is TileMapLayer:
            _cells_count += len(layer.get_used_cells())
    return _cells_count

- update_grid_map

grid_map を更新。

func update_grid_map():
    grid_map.clear()
    for layer_index in range(0, get_layers_count()):
        var z = get_layer_z_index(layer_index) / z_step
        for tile in get_used_cells(layer_index):
            var tile_data = get_cell_tile_data(layer_index, Vector2(tile.x, tile.y))
            grid_map.set_cell_item(Vector3(tile.x, z-1, tile.y+z), tile_data.get_custom_data("Item"))
    for layer in get_children():
        if layer is TileMapLayer:
            var z = layer.z_index / z_step
            for tile in layer.get_used_cells():
                var tile_data = layer.get_cell_tile_data(Vector2(tile.x, tile.y))
                grid_map.set_cell_item(Vector3(tile.x, z-1, tile.y+z), tile_data.get_custom_data("Item"))