在 Godot 4.0 中,我试图添加检测与瓷砖碰撞的能力,当它被击中时移除瓷砖。我让它与 1x1 的图块一起工作,但是当我将图块变大时(使图集中的标题为 3x3),突然它们不再被删除。 print_debug 仍然显示它发生了碰撞。
if (collision.get_collider().get_class() == "TileMap"):
print_debug("ball hit tilemap")
var localc = tilemap.to_local(collision.get_position() - collision.get_normal())
var cell = tilemap.local_to_map(localc)
tilemap.set_cell(0, cell, -1)
在调试器中看到错误/警告,尽管我认为它在工作时也存在。
editor/plugins/tiles/tile_set_editor.cpp:227 - Condition "!tile_set.is_valid()" is true.
添加了一些额外的日志记录:
print_debug("cell=", cell, " cell_data for 'cell'=", tilemap.get_cell_tile_data(0, cell))
print_debug("used cells=",tilemap.get_used_cells(0))
得到了
cell=(33, 4) cell_data for 'cell'=<Object#null>
used cells=[(9, 3), (12, 3), (15, 3), (18, 3), (25, 3), (28, 3), (34, 3), (37, 3), (43, 3), (46, 3), (51, 3), (54, 3)]
所以我想知道它是否需要它是瓷砖的确切“中心”坐标?不知道如何解决...