【发布时间】:2021-09-08 18:22:34
【问题描述】:
我正在制作一个系统来生成带有预制房间的场景,即使 TileMap 节点包含完全相同的集合,它们也不与其他节点交互,从而给它们带来这种奇怪的分段感觉。我试图编写代码将它们融合到一个节点中,但似乎我可能对如何使用单元格的局部/全局坐标感到困惑。
分段房间图片:
我的想法是使用get_used_cells_by_id 方法的ID 向房间场景询问单元格,然后使用set_cell 将它们添加到主场景中的TileMap。任何帮助表示赞赏
func updateDungeonTileMap():
var maintileMap = $TileMap
var tileMapID:Array = [0, 1, 2]
var roomCheck:Array = $Rooms.get_children()
for i in tileMapID.size():
for o in roomCheck.size():
var roomTileMap = roomCheck[o].getTileMap()
var cells:Array = roomCheck[o].getTileMapCells(i)
for u in cells.size():
var globalCord:Vector2 = roomTileMap.to_global(cells[u])
var localCord:Vector2 = maintileMap.to_local(globalCord)
maintileMap.set_cell(localCord[0], localCord[1], i)
for i in roomCheck.size():
roomCheck[i].removeTileMap()
maintileMap.update_bitmask_region()
func getTileMapCells(id):
return $TileMap.get_used_cells_by_id(id)
【问题讨论】: