在 Godot 中使用 Tiles 获取联系信息

Getting Contact Information with Tiles in Godot

我能否以某种方式获取玩家触摸了位于资源 (tilemap.res) 中的特定图块的信息? 需要确定它站在哪块瓦片上(例如,在陆地上还是在水中)

这取决于您期望什么样的行为。有两种主要方法可以做到这一点:

  1. 在您希望受图块影响的每个单独脚本中,每次移动时获取它所在的图块,然后直接从那里运行逻辑。
  2. 如上所述,每次移动时获取单位所在的图块,但不是每次都 运行 逻辑,每当图块发生变化时发出信号,并保持当前图块缓存您可以检查它何时出现在新的磁贴上;让 TileMap 本身附加到信号上,当它接收到信号时,作用于 Node2D 直到它离开。这就是我要做的。

找到瓦片的确切方法是TileMap.world_to_map(TileMap.get_cellv(Node2D.position))——你只需要有Node2D和TileMap,你可以使用上述两种方法在同一个函数中得到它们。

从技术上讲,您还可以使用 TileMap.get_used_cells_by_id 根据不同位置的图块在程序上将 Area2D 添加到图块地图中,确保 ID 是具有特殊行为的 ID,然后将 TileMap 附加到那些areas' body/area_enteredbody/area_exited 并使用它,但是当您可以直接检查 Node2D 的磁贴时,不需要发送大量 Area2D。