convertToNodeSpaceAR 预览时与发布后输出结果不同问题


        on(cc.Node.EventType.TOUCH_START, (touch: cc.Event.EventTouch) => {
            let target = touch.getCurrentTarget();
            let locationInNode = target.convertToNodeSpaceAR(touch.getLocation());
            // 问题: ↑ 输出的结果还是touch.getLocation() 并没有进行转换,预览时没问题,发布后就转换不了了

断点排查 发现使用的是 _worldMatrix 属性进行转换的

CCNode.js

  convertToNodeSpaceAR: function convertToNodeSpaceAR(worldPoint, out) {
    this._updateWorldMatrix();

    _valueTypes.Mat4.invert(_mat4_temp, this._worldMatrix);

    if (worldPoint instanceof cc.Vec2) {
      out = out || new cc.Vec2();
      return _valueTypes.Vec2.transformMat4(out, worldPoint, _mat4_temp);
    } else {
      out = out || new cc.Vec3();
      return _valueTypes.Vec3.transformMat4(out, worldPoint, _mat4_temp);
    }
  },

预览时的_worldMatrix [\n1, 0, 0, 0,\n0, 1, 0, 0,\n0, 0, 1, 0,\n568, 320, 0, 1\n]

发布后的_worldMatrix [\n1, 0, 0, 0,\n0, 1, 0, 0,\n0, 0, 1, 0,\n0, 0, 0, 1\n]
问题出现在以上标红的下标 , 实际对应的应该是相对世界坐标的位置,所以这块 转换不出来

挨个节点往上查发现都是0,那问题就和场景有关系了

最后我新建项目和当前项目对比,发现当前项目场景文件的第一个_active不知道什么时候被设置为false了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值