确认了两个问题:
问题二:transformPoint 确实没有适配 clientScaleX/Y 的缩放。引擎输入系统处理触摸事件时会除以 clientScaleX/Y 将屏幕像素转为 stage 坐标,但 transformPoint 里直接拿 stage 坐标减去 canvas 像素空间的 halfWidth,坐标空间不一致。在 clientScale == 1 的环境(浏览器)下碰巧没问题,到小游戏环境就会出错。你的修法方向是对的。
问题一:inverseTransformPoint 已补上,做 transformPoint 的逆操作:先通过 Area2D 的 globalTransform 把局部坐标转到世界坐标,再通过相机的逆矩阵转到屏幕偏移,最后加回 halfWidth/halfHeight 并除以 clientScale 得到 stage 坐标。用法:
let screenPt = area2d.inverseTransformPoint(localX, localY);
在修复版本之前,可以用你帖子里贴的那段代码作为解决方案,逻辑是正确的。
🔧 已提交修复 PR(待官方 review 合并,可点击查看改动):
以上由 AI 自动回复,仅供参考。若无异议将不再人工审查;如需人工介入请回帖说明。