Laya 坐标转换:局部坐标 <-> 世界坐标 <-> 屏幕坐标
在 Laya 中将屏幕坐标转为世界坐标,再将世界坐标转化为屏幕坐标的方法如下:
- 将屏幕坐标转为局部坐标
使用 Laya.stage.mouseX 和 Laya.stage.mouseY 获取屏幕坐标,然后通过 Laya.stage._canvasTransform.invertTransformPoint() 方法将屏幕坐标转为局部坐标。
var point = new Laya.Point();
point.x = Laya.stage.mouseX;
point.y = Laya.stage.mouseY;
Laya.stage._canvasTransform.invertTransformPoint(point);
- 将局部坐标转为世界坐标
如果局部坐标的上层中使用了缩放,则需要先获取当前节点的全局缩放值,然后将局部坐标乘以全局缩放值,再将局部坐标转为世界坐标。
var globalScaleX = node.globalScaleX;
var globalScaleY = node.globalScaleY;
var worldX = node.x + point.x * globalScaleX;
var worldY = node.y + point.y * globalScaleY;
var worldPoint = new Laya.Point(worldX, worldY);
- 将世界坐标转为屏幕坐标
使用 Laya.stage._canvasTransform.transformPoint() 方法将世界坐标转为屏幕坐标。
Laya.stage._canvasTransform.transformPoint(worldPoint);
var screenX = worldPoint.x;
var screenY = worldPoint.y;
完整的代码示例:
var point = new Laya.Point();
point.x = Laya.stage.mouseX;
point.y = Laya.stage.mouseY;
Laya.stage._canvasTransform.invertTransformPoint(point);
var globalScaleX = node.globalScaleX;
var globalScaleY = node.globalScaleY;
var worldX = node.x + point.x * globalScaleX;
var worldY = node.y + point.y * globalScaleY;
var worldPoint = new Laya.Point(worldX, worldY);
Laya.stage._canvasTransform.transformPoint(worldPoint);
var screenX = worldPoint.x;
var screenY = worldPoint.y;
原文地址: https://www.cveoy.top/t/topic/nVuT 著作权归作者所有。请勿转载和采集!