【发布时间】:2021-09-05 10:28:15
【问题描述】:
我正在尝试这样做,如果一个函数被称为 Collisionshape2D 覆盖的区域,则会在 TileMap 节点中删除它的图块。我的问题是删除的区域与 Collisionshape2D 不匹配。任何见解表示赞赏!谢谢。
我的代码:
func changeArea(collionshape):
var corridorTile = $CorridorTiles
var rect = Rect2(collionshape.position, collionshape.shape.extents*2)
var topleft = corridorTile.world_to_map(rect.position)
var bottomright = corridorTile.world_to_map(rect.end)
for x in range(topleft.x, bottomright.x):
for y in range(topleft.y, bottomright.y):
corridorTile.set_cell(x, y, -1)
编辑1*
将代码更改为:
func changeCorridorTile(collionshape):
var corridorTile = $CorridorTiles
var extents:Vector2 = collionshape.shape.extents
var topleft = corridorTile.world_to_map(collionshape.position - extents)
var bottomright = corridorTile.world_to_map(collionshape.position + extents)
for x in range(topleft.x, bottomright.x):
for y in range(topleft.y, bottomright.y):
corridorTile.set_cell(x, y, -1)
corridorTile.update_bitmask_region()
collisionShape2D 区域覆盖的tileMap 中的单元格被删除。我使用 .bitmask_region() 方法更新它们。
【问题讨论】: