Godot 4点选移动系统偏移问题(所有精灵锚点为0,0)
点选移动坐标偏移问题解决
问题原因
你的代码在精灵主场景正常,但放入游戏场景后出现偏移,核心原因是坐标系不匹配:get_global_mouse_position()获取的是全局屏幕坐标,而CharacterBody2D的position是相对于父节点的局部坐标,直接赋值会导致两者不在同一坐标系下,产生偏移。
修复方案
1. 统一坐标系
将全局鼠标坐标转换为当前节点的局部坐标,替换_input函数中的赋值逻辑:
func _input(event): if event.is_action_pressed("click"): target = to_local(get_global_mouse_position())
这样target和position都基于节点的局部坐标系,移动逻辑就会准确匹配点击位置。
2. 检查场景层级变换
如果修改后仍有偏移,检查游戏场景中精灵的父节点:
- 是否存在
Camera2D节点,其zoom属性是否被修改(缩放会影响坐标映射) - 父节点是否设置了非默认的
position、scale或rotation属性,这些变换会传递给子节点
3. 验证Godot 4适配
你提到误切换到Godot 4,这里需要注意:get_global_mouse_position()在Godot 4中的行为和3.x一致,但确保项目设置中的Display > Window > Stretch选项没有异常配置,比如拉伸模式或适配方式不当也可能导致坐标偏移。
内容的提问来源于stack exchange,提问作者DIMITRI PORTILLA
相关产品推荐
相关产品推荐

