我可以以某种方式获得玩家触摸资源(tilemap.res(中的特定图块的信息吗? 有必要确定它站在哪个瓷砖上(例如,在陆地或水中(
这取决于您期望的行为类型。有两种主要方法可以做到这一点:
- 在要受磁贴影响的每个脚本中,每次移动磁贴时获取它所在的磁贴,然后直接从那里运行逻辑。 如上所述,获取单元每次移动时所在的磁贴,
- 但不要每次都运行逻辑,而是在磁贴更改时发出信号,并保持当前磁贴缓存,以便您可以检查它何时位于新磁贴上; 让 TileMap 本身附加到信号,当它收到信号时, 在 Node2D 上操作,直到它离开。这就是我要做的。
找到图块的确切方法是TileMap.world_to_map(TileMap.get_cellv(Node2D.position))
--你只需要有 Node2D 和 TileMap,你可以使用上述两种方法在同一函数中获取两者。
从技术上讲,您还可以使用TileMap.get_used_cells_by_id
根据不同位置的磁贴程序性地将 Area2D 添加到瓦片地图中,确保 ID 是具有特殊行为的 ID,然后将 TileMap 附加到这些区域的body/area_entered
和body/area_exited
并使用它,但是当您可以直接检查Node2D
所在的磁贴时,不需要发送大量 Area2D 的垃圾邮件。