当瓷砖大于一个单位大时碰撞后获取瓷砖

问题描述 投票:0回答:0

在 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)]

所以我想知道它是否需要它是瓷砖的确切“中心”坐标?不知道如何解决...

2d collision-detection godot
© www.soinside.com 2019 - 2024. All rights reserved.