将局部(视口相对坐标)转换为全局(图层坐标)

Convert local (viewport relative coordinates) to global (layer coordinates)

本文关键字:坐标 全局 图层 转换 局部 相对 视口      更新时间:2023-09-26

我正在尝试将视口坐标转换为全局(层)坐标。

我已经尝试过文档中描述的方法,但似乎不起作用:

var result= me.game.viewport.localToWorld(x,y, me.game.viewport.AXIS_BOTH);

我有,工作虎钳反之亦然的组合(将全局转换为本地):

me.event.subscribe("pointerdown", function (event) {
  // convert the given into local (viewport) relative coordinates
  var pos = me.input.globalToLocal(event.clientX, event.clientY);
});

为什么我认为me.game.viewport.localToWorld不起作用?因为对于我的实体,单击它时,我的坐标差异非常大(例如超过 200 个点)。

代码片段:

game.PlayerEntity = me.Entity.extend({
    /**
     * constructor
     */
    init:function (x, y, settings)
    {
        var self=this;
        self.leftMouseClicked=false;
        me.event.subscribe("pointerdown", function (event) {
            if(!self.leftMouseClicked) {
                var result= me.game.viewport.localToWorld(self.pos.x,self.pos.y, me.game.viewport.AXIS_BOTH);
                console.log(result);
                console.log(event.clientX);
                console.log(event.clientY);
                self.leftMouseClicked=true;
            }
        });
...

所以我的问题是:

如何将视口坐标转换为第一层,类似于我们将全局转换为本地坐标?

我已经

找到了解决方案,它正在从me.game.viewport.pos偏移

结果代码:

var self=this;
me.event.subscribe("pointerdown", function (event) {
        //me.game.viewport.pos -- offset
        var pos = me.input.globalToLocal(event.clientX, event.clientY);
        self.mouseXCoord = pos.x+me.game.viewport.pos.x;
        self.mouseYCoord = pos.y+me.game.viewport.pos.y;
});