2D模式怎么获取鼠标点击位置的世界坐标


cocos creator v3.8.5版本, 2D游戏, 怎么获取点击屏幕时的世界坐标, 我这样写获取转换后的坐标位置不对呢

:joy: :joy:求助求助

getUILocation

getUILocation 的结果怎么转为世界坐标,没有找到这个方法

这个结果就是世界坐标

监听Node.EventType.MOUSE_DOWN,回调函数event:EventMouse有getUILocation。但这个坐标是基于屏幕左下角为坐标轴原点(0,0),所以获取后还要按照自己的canvas的坐标轴原点去计算实际坐标。
比如canvas(0.5,0.5)为屏幕正中心为原点:

// 提前在start()之类的单次执行函数计算屏幕中心坐标
const view_size = view.getDesignResolutionSize();
this._view_center_pos.set(view_size.width / 2, view_size.height / 2);

event.getUILocation(this._mouse_pointer_pos);
const c_pointer_x: number = this._mouse_pointer_pos.x - this._view_center_pos.x;
const c_pointer_y: number = this._mouse_pointer_pos.y - this._view_center_pos.y;
// 最终在原点为(0.5,0.5)的坐标轴内,鼠标坐标
this._mouse_pointer_center_pos.set(c_pointer_x, c_pointer_y)

再拿这个计算的鼠标坐标去作相应的世界和本地坐标转换。

如果需要持续获取鼠标坐标,监听MOUSE_MOVE事件即可。