let distance = pos.subtract(value.node.position).length();
这个地方,pos的值竟然会改变,我理解不了,我认为这是bug
我也在这里踩坑了,就是不太直观。好像是为了减少临时Vec变量的生成,拿自身减的,英文注释比较清晰, 说了是return this。所以这里实际需要pos.clone().subtract...
/**
* @en Subtracts one vector from this, and returns this.
* @zh 向量减法。将当前向量减去指定向量的结果。
* @param other specified vector
*/
subtract(other: Vec3): this
1赞
使用Vec3.substract(),成员方法都是会改变自己的。
1赞
clone 感觉更方便一点。用 Vec3.substract 大多需要显式的声明了一个临时 Vec 变量,效率上没差。
我个人的习惯是除了取长度只用静态方法:Vec3.subtract(v3(), pos, value.node.position).length 或者 Vec3.distance(pos, value.node.position)。
关键是如果这里发生变化,图片的位置发生了变化,那没问题,我就看我图片显示没变化,坐标一直在变。
幸好写的不多,然后就测试出来了,这要是写的多一点,然后再来找这个问题,不得疯了。