我没没仔细看你的代码,但是我从头到尾写一遍,关于连接图块的代码,看看能不能帮到你
var cells = get_used_cells(0)(在ready里执行)
func add_cell_and_connect(grid):
~~if cells.has(grid):return
~~cells.append(grid)
~~set_cells_terrain_connect(0,[grid],0,0)
连接的时候,只需要知道新方块是哪个就可以了,他即是添加图块,也是连接,所以不需要用set_cell,直接连接就可以了,但是断开连接的时候需要把周围的图块都断掉,再把周围图块重新添加进去。不知道为什么会有这样的不同,但是我自己写的时候也出现了这个问题。
func erase_cell_and_disconnect(grid):
~~if not cells.has(grid):return
~~erase_cell(0,grid)
~~cells.erase(grid)
~~for i in get_surrounding_cells(grid):
~~~~erase_cell(0,i)/////////把要移除的tile以及他的周围tile都从tilemap上移除
~~set_cells_terrain_connect(0,cells,0,0)///////但是cells里面只移除了要移除的那一个图块,所以直接添加图块+连接就可以了,但是这样应该会重置tiledata的,不过这还算是好解决的问题,主要是移除方块就得这么移除,属于是没办法的事,但是tiledata的保留还是想想办法就能搞定的。
var cells = get_used_cells(0)(在ready里执行)
func add_cell_and_connect(grid):
~~if cells.has(grid):return
~~cells.append(grid)
~~set_cells_terrain_connect(0,[grid],0,0)
连接的时候,只需要知道新方块是哪个就可以了,他即是添加图块,也是连接,所以不需要用set_cell,直接连接就可以了,但是断开连接的时候需要把周围的图块都断掉,再把周围图块重新添加进去。不知道为什么会有这样的不同,但是我自己写的时候也出现了这个问题。
func erase_cell_and_disconnect(grid):
~~if not cells.has(grid):return
~~erase_cell(0,grid)
~~cells.erase(grid)
~~for i in get_surrounding_cells(grid):
~~~~erase_cell(0,i)/////////把要移除的tile以及他的周围tile都从tilemap上移除
~~set_cells_terrain_connect(0,cells,0,0)///////但是cells里面只移除了要移除的那一个图块,所以直接添加图块+连接就可以了,但是这样应该会重置tiledata的,不过这还算是好解决的问题,主要是移除方块就得这么移除,属于是没办法的事,但是tiledata的保留还是想想办法就能搞定的。