使用 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)
目标是让玩家能够为角色打上补丁。 所以我从简单的思考开始,为 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)