setPosition中参数如果是小数,执行后不准确

简介:

let testNode = new cc.Node;

testNode.setPosition(12.1, 0, 0);

console.log(testNode.position);

输出结果为 Object { x: 12.100000381469727, y: 20, z: 20 }

请教各位大佬,这是个什么原因?有什么方法可以改正吗?

————————

  • Creator 版本:2.2.0

  • 重现方式: 一直

一时着急题目输出的结果和传入的参数不相同……
结果应为 Object { x: 12.100000381469727, y: 0, z: 0 }

// setPosition源码
function setPosition (newPosOrX, y, z) {
    ...
    let trs = this._trs;// this._trs是Float32Array
    ...
    trs[0] = x;
    trs[1] = y;
    trs[2] = z;
    ...
}

Float32Array引起的小数不准确,应该是这造成的

1赞

太感谢您了!

请问您,这源码是在哪里查看的呢?

去看看有没有什么解决方案

浏览器控制台输入这个,直接回车
cc.Node.prototype.setPosition

1赞

万分感谢您

一样

:sweat:不知道目前有没有合适的解决方法了

临时改引擎做数值转换呗,等大佬们发新版本后再去掉就行了。

我也遇到了,scale也有问题