GridMap
Inherits: Spatial < Node < Object
基于3D贴图格地图(3D tile-based maps)的节点。
描述
GridMap允许你以交互方式将meshes网格放置在网格上。它既可以在编辑器中进行,也可以从脚本中进行,这可以帮助你在游戏中创建关卡编辑器。
GridMaps使用MeshLibrary,其中包含了一个图块的列表。每一个图块都是一个带有材质的网格,加上可选的碰撞和导航形状。
GridMap包含一个单元格的集合。每个网格单元指的是MeshLibrary中的一个图块。地图中的所有单元都有相同的尺寸。
在内部,GridMap被分割成一个松散的八边形集合,以便有效地进行渲染和物理处理。每个八角形都有相同的尺寸,可以包含多个单元。
注意:GridMap 没有扩展 VisualInstance,因此无法根据 VisualInstance.layers 进行隐藏或剔除遮挡。如果你让灯光不影响第一层,整个 GridMap 就都不会被相关的灯光照亮。
教程
属性
| ||
| ||
| ||
| ||
| ||
| ||
| ||
| ||
|
方法
void | clear ( ) |
void | |
get_bake_mesh_instance ( int idx ) | |
get_bake_meshes ( ) | |
get_cell_item ( int x, int y, int z ) const | |
get_cell_item_orientation ( int x, int y, int z ) const | |
get_collision_layer_bit ( int bit ) const | |
get_collision_mask_bit ( int bit ) const | |
get_meshes ( ) | |
get_used_cells ( ) const | |
void | make_baked_meshes ( bool gen_lightmap_uv=false, float lightmap_uv_texel_size=0.1 ) |
map_to_world ( int x, int y, int z ) const | |
void | resource_changed ( Resource resource ) |
void | set_cell_item ( int x, int y, int z, int item, int orientation=0 ) |
void | set_clip ( bool enabled, bool clipabove=true, int floor=0, Vector3.Axis axis=0 ) |
void | set_collision_layer_bit ( int bit, bool value ) |
void | set_collision_mask_bit ( int bit, bool value ) |
world_to_map ( Vector3 pos ) const |
信号
- cell_size_changed ( Vector3 cell_size )
当 cell_size 改变时触发。
常量
- INVALID_CELL_ITEM = -1 —- 可以在 set_cell_item 中清除单元格(或在 get_cell_item 中重新代表一个空的单元格)的无效单元格。
属性说明
- bool cell_center_x
Default |
|
Setter | set_center_x(value) |
Getter | get_center_x() |
如果true
,则网格项以X轴为中心。
- bool cell_center_y
Default |
|
Setter | set_center_y(value) |
Getter | get_center_y() |
如果为 true
,则网格项以 Y 轴为中心。
- bool cell_center_z
Default |
|
Setter | set_center_z(value) |
Getter | get_center_z() |
如果为 true
,则网格项以 Z 轴为中心。
- int cell_octant_size
Default |
|
Setter | set_octant_size(value) |
Getter | get_octant_size() |
每个八分圆的大小以单元格的数量衡量。这适用于三个轴(XYZ)。
- float cell_scale
Default |
|
Setter | set_cell_scale(value) |
Getter | get_cell_scale() |
单元格项目的比例。
这不会影响网格单元本身的大小,只会影响其中的项目。这可用于使单元格项目与其邻居重叠。
- Vector3 cell_size
Default |
|
Setter | set_cell_size(value) |
Getter | get_cell_size() |
网格单元的尺寸。
这并不影响网格的尺寸大小。参阅cell_scale。
- int collision_layer
Default |
|
Setter | set_collision_layer(value) |
Getter | get_collision_layer() |
这个GridMap所处的物理层。
Gridmap作为静态体,意味着它们不会受到重力或是其他力的影响。它们只会受到其他与它们碰撞的物理体的影响。
- int collision_mask
Default |
|
Setter | set_collision_mask(value) |
Getter | get_collision_mask() |
The physics layers this GridMap detects collisions in. See Collision layers and masks in the documentation for more information.
- MeshLibrary mesh_library
Setter | set_mesh_library(value) |
Getter | get_mesh_library() |
指定的MeshLibrary。
- bool use_in_baked_light
Default |
|
Setter | set_use_in_baked_light(value) |
Getter | get_use_in_baked_light() |
控制此 GridMap 是否会在 BakedLightmap 中烘焙。
方法说明
- void clear ( )
清除所有单元格。
- void clear_baked_meshes ( )
- Array get_bake_meshes ( )
返回当前GridMap中存在的所有烘焙网格的ArrayMesh和Transform引用的数组。
MeshLibrary 项目索引位于基于网格的 X、Y 和 Z 坐标处。如果单元格为空,则返回 INVALID_CELL_ITEM。
单元格在基于网格的 X、Y 和 Z 坐标处的方向。如果单元格为空,则返回 -1。
返回collision_layer上的一个单独像素点。
返回collision_mask上的一个独立像素。
- Array get_meshes ( )
返回对应于网格中非空单元格的 Transform 和 Mesh 引用数组。变换在世界空间中指定。
- Array get_used_cells ( ) const
返回一个包含网格中非空单元格坐标的 Vector3 数组。
返回一个网格单元在GridMap本地坐标空间中的位置。
- void resource_changed ( Resource resource )
设置由基于网格的 X、Y 和 Z 坐标引用的单元格的网格索引。
负的项目索引将清除单元格,例如 INVALID_CELL_ITEM。
或者,可以传递项目的方向。相关有效的方向值,请参阅 Basis.get_orthogonal_index。
在collision_layer上设置独立像素。
在collision_mask上设置独立像素。
返回包含给定点的网格单元的坐标。
pos
应该在GridMap的本地坐标空间中。