使用 InputEventScreenTouch 缩放时错误的 TileMap 坐标

Wrong TileMap coordinates on zoom with InputEventScreenTouch

目标是让玩家能够为角色打上补丁。 所以我从简单的思考开始,为 tilemap

中的 cell(0, 0) 设置值

并在用户点击时替换值

它按预期工作。

但是当我更改相机变焦并再次尝试时,它在另一个单元格中设置了值:

我试图通过缩放值 multiple/divide 点击位置,但它也没有解决问题

谁能告诉我应该如何处理?

回购:Github

缩放后,您从输入事件中获得的坐标(屏幕坐标)与世界不匹配。

如果您有输入事件,推荐的方法是 make_input_local:

tilemap.world_to_map(tilemap.make_input_local(event).position)

然而,如果你没有,但你有屏幕坐标,你可以这样做:

var transform = tilemap.get_canvas_transform() * tilemap.get_global_transform()
tilemap.world_to_map(transform.affine_inverse() * screen_coordinates)