TileMap¶
Inherits: Node2D < CanvasItem < Node < Object
类别: 核心
简要说明¶
用于基于二维平铺的地图的节点。
属性¶
假 |
||
Transform2d(1,0,0,1,0,0) |
||
2 |
||
16 |
||
矢量2(64、64) |
||
0 |
||
假 |
||
假 |
||
0.0 |
||
1.0 |
||
1 |
||
1 |
||
假 |
||
假 |
||
假 |
||
0 |
||
1 |
||
方法¶
无效 |
clear ( ) |
无效 |
|
get_cell_autotile_coord ( int x, int y ) const |
|
get_collision_layer_bit ( int bit ) const |
|
get_collision_mask_bit ( int bit ) const |
|
get_used_cells ( ) const |
|
get_used_cells_by_id ( int id ) const |
|
get_used_rect ( ) |
|
is_cell_transposed ( int x, int y ) const |
|
is_cell_x_flipped ( int x, int y ) const |
|
is_cell_y_flipped ( int x, int y ) const |
|
map_to_world ( Vector2 map_position, bool ignore_half_ofs=false ) const |
|
无效 |
set_cell ( int x, int y, int tile, bool flip_x=false, bool flip_y=false, bool transpose=false, Vector2 autotile_coord=Vector2( 0, 0 ) ) |
无效 |
set_cellv ( Vector2 position, int tile, bool flip_x=false, bool flip_y=false, bool transpose=false ) |
无效 |
set_collision_layer_bit ( int bit, bool value ) |
无效 |
set_collision_mask_bit ( int bit, bool value ) |
无效 |
update_bitmask_area ( Vector2 position ) |
无效 |
update_bitmask_region ( Vector2 start=Vector2( 0, 0 ), Vector2 end=Vector2( 0, 0 ) ) |
无效 |
|
world_to_map ( Vector2 world_position ) const |
枚举¶
枚举 Mode :
MODE_SQUARE = 0 ---正交定向模式。
MODE_ISOMETRIC = 1 ---等轴测方向模式。
MODE_CUSTOM = 2 ---自定义方向模式。
枚举 HalfOffset :
HALF_OFFSET_X = 0 ---X坐标上的半偏移。
HALF_OFFSET_Y = 1 ---Y坐标上的半偏移。
HALF_OFFSET_DISABLED = 2 ---半偏移禁用。
HALF_OFFSET_NEGATIVE_X = 3 ---X坐标上的半偏移(负)。
HALF_OFFSET_NEGATIVE_Y = 4 ---Y坐标上的半偏移(负)。
枚举 TileOrigin :
TILE_ORIGIN_TOP_LEFT = 0 ---瓷砖原点位于左上角。
TILE_ORIGIN_CENTER = 1 ---瓷砖的中心位置。
TILE_ORIGIN_BOTTOM_LEFT = 2 ---瓷砖原点位于左下角。
常量¶
INVALID_CELL = -1 ---当单元格不存在时返回。
教程¶
属性描述¶
bool cell_clip_uv
违约 |
假 |
设定器 |
设置“剪辑”UV(值) |
吸气剂 |
获取剪辑 |
Transform2D cell_custom_transform
违约 |
Transform2d(1,0,0,1,0,0) |
设定器 |
设置自定义转换(值) |
吸气剂 |
获取自定义转换() |
习俗 Transform2D 应用于tilemap的单元格。
HalfOffset cell_half_offset
违约 |
2 |
设定器 |
设置“半偏移”(值) |
吸气剂 |
得到半偏移量 |
补偿交替瓷砖的量。见 HalfOffset 对于可能的值。
int cell_quadrant_size
违约 |
16 |
设定器 |
设置象限大小(值) |
吸气剂 |
获取象限大小()。 |
tilemap的象限大小。使用此大小的块通过批处理优化绘图。
Vector2 cell_size
违约 |
矢量2(64、64) |
设定器 |
设置单元格大小(值) |
吸气剂 |
获取单元格大小() |
tilemap的单元格大小。
TileOrigin cell_tile_origin
违约 |
0 |
设定器 |
设置瓷砖原点(值) |
吸气剂 |
获取u图块u原点() |
瓷砖原点的位置。见 TileOrigin 对于可能的值。
bool cell_y_sort
违约 |
假 |
设定器 |
设置排序模式(值) |
吸气剂 |
是否启用了“排序模式”() |
如果 true
,tilemap的子对象将按其Y坐标的顺序绘制。
bool centered_textures
违约 |
假 |
设定器 |
设置“居中”纹理(值) |
吸气剂 |
是否启用了以“u”为中心的“u”纹理() |
如果 true
,纹理将集中在每个瓷砖的中间。当纹理大于或小于瓷砖时(例如,为了避免瓷砖边缘闪烁),这对于某些等轴测或自上而下模式很有用。偏移仍然应用,但从瓷砖的中心开始。如果使用, compatibility_mode 被忽略。
如果 false
,纹理位置从左上角开始,除非 compatibility_mode 启用。
float collision_bounce
违约 |
0.0 |
设定器 |
设置碰撞反弹(值) |
吸气剂 |
得到碰撞反弹 |
静态物体碰撞的反弹值(参见 collision_use_kinematic
)
float collision_friction
违约 |
1.0 |
设定器 |
设置碰撞摩擦(值) |
吸气剂 |
得到碰撞摩擦 |
静态物体碰撞的摩擦值(参见 collision_use_kinematic
)
int collision_layer
违约 |
1 |
设定器 |
设置碰撞层(值) |
吸气剂 |
获取“碰撞层”() |
tilemap中所有碰撞器的碰撞层。
int collision_mask
违约 |
1 |
设定器 |
设置碰撞屏蔽(值) |
吸气剂 |
获取碰撞掩模( |
tilemap中所有碰撞器的碰撞遮罩。
bool collision_use_kinematic
违约 |
假 |
设定器 |
设置碰撞使用运动(值) |
吸气剂 |
获取碰撞使用运动学()。 |
如果 true
,tilemap碰撞将作为运动体处理。如果 false
,碰撞将作为静态实体处理。
bool collision_use_parent
违约 |
假 |
设定器 |
设置碰撞使用父级(值) |
吸气剂 |
获取冲突使用父级 |
bool compatibility_mode
违约 |
假 |
设定器 |
设置兼容模式(值) |
吸气剂 |
是否启用了兼容模式()。 |
如果 true
,与godot 3.1或更早版本中制作的tilemaps保持兼容性(纹理在瓷砖原点更改时移动,如果纹理大小不均匀则旋转)。此模式在执行时出现问题 flip_h
, flip_v
和 transpose
非均匀等距瓷砖(如2:1)上的瓷砖操作,其中纹理与碰撞不一致,因此不建议等距或非方形瓷砖使用。
如果 false
,执行此操作时纹理不会移动 flip_h
, flip_v
操作(如果未使用偏移),或更改瓷砖原点时。
兼容模式不适用于 centered_textures 选项,因为将纹理替换为 cell_tile_origin 选项或不规则瓷砖在居中纹理时不相关。
Mode mode
违约 |
0 |
设定器 |
设置模式(值) |
吸气剂 |
获取_模式() |
tilemap方向模式。见 Mode 对于可能的值。
int occluder_light_mask
违约 |
1 |
设定器 |
设置遮光罩(值) |
吸气剂 |
得到遮光罩 |
指定给tilemap中所有灯光遮挡器的灯光遮罩。tileset的灯光遮挡器将仅从具有相同灯光遮罩的灯光2d投射阴影。
TileSet tile_set
设定器 |
设置(值) |
吸气剂 |
获取蒂列集() |
分配的 TileSet .
方法说明¶
void clear ( )
清除所有单元格。
void fix_invalid_tiles ( )
清除tileset中不存在的单元格。
返回给定单元格的平铺索引。如果单元格中不存在图块,则返回 INVALID_CELL .
返回由vector2给定的单元格的平铺索引。如果单元格中不存在图块,则返回 INVALID_CELL .
返回 true
如果设置了给定的碰撞层位。
返回 true
如果设置了给定的碰撞屏蔽位。
Array get_used_cells ( ) const
返回A Vector2 数组,其中包含来自tileset的tile的所有单元格的位置(即不同于 -1
)
返回具有给定图块的所有单元格的数组 id
.
Rect2 get_used_rect ( )
返回一个矩形,该矩形包含已使用(非空)的映射图块。
返回 true
如果给定的单元被转置,即X和Y轴被交换。
返回 true
如果给定的单元格在X轴上翻转。
返回 true
如果给定单元格在Y轴上翻转。
返回与给定的tilemap(基于网格)坐标对应的全局位置。
或者,可以忽略tilemap的半偏移量。
void set_cell ( int x, int y, int tile, bool flip_x=false, bool flip_y=false, bool transpose=false, Vector2 autotile_coord=Vector2( 0, 0 ) )
为vector2给定的单元格设置平铺索引。
的索引 -1
清除单元格。
也可以选择翻转、转置或给定自动图档坐标。
注: 由于性能原因,导航多边形和碰撞形状等数据不会立即更新。
如果您需要立即更新这些内容,可以致电 update_dirty_quadrants .
重写此方法也会在内部重写它,允许在放置/删除块时实现自定义逻辑:
func set_cell(x, y, tile, flip_x, flip_y, transpose, autotile_coord)
# Write your custom logic here.
# To call the default method:
.set_cell(x, y, tile, flip_x, flip_y, transpose, autotile_coord)
void set_cellv ( Vector2 position, int tile, bool flip_x=false, bool flip_y=false, bool transpose=false )
设置给定单元格的平铺索引。
的索引 -1
清除单元格。
也可以选择翻转或换位瓷砖。
注: 由于性能原因,导航多边形和碰撞形状等数据不会立即更新。
如果您需要立即更新这些内容,可以致电 update_dirty_quadrants .
设置给定的碰撞层位。
设置给定的碰撞遮罩位。
void update_bitmask_area ( Vector2 position )
对其基于网格的X和Y坐标引用的单元格(及其相邻单元格)应用自动跟踪规则。
将自动跟踪规则应用于给定区域中的单元格(由基于网格的X和Y坐标指定)。
使用无效(或缺少)参数进行调用会对整个tilemap应用自动分页规则。
void update_dirty_quadrants ( )
更新平铺地图的象限,允许在修改后立即使用导航和碰撞形状等内容。
返回与给定本地位置对应的tilemap(基于网格)坐标。