我不确定是不是这个原因,但我认为不是。
@1111934 你们的观点和我的不同,只是不同的设计选择,我也不说服谁,只列举一下主流引擎的选择:
Laya: 牺牲 getWorldPosition 的性能,在调用时向上递归计算,直接获取到正确值。
Cocos v2.x: 同上,直接获取到正确值。
Unreal: 同上,直接获取到正确值。
Unity: 看不到源码,但能直接获取到正确值。
Three.js: 默认情况下需要手动 update,不能直接获取。
我不确定是不是这个原因,但我认为不是。
@1111934 你们的观点和我的不同,只是不同的设计选择,我也不说服谁,只列举一下主流引擎的选择:
Laya: 牺牲 getWorldPosition 的性能,在调用时向上递归计算,直接获取到正确值。
Cocos v2.x: 同上,直接获取到正确值。
Unreal: 同上,直接获取到正确值。
Unity: 看不到源码,但能直接获取到正确值。
Three.js: 默认情况下需要手动 update,不能直接获取。
laya好像是纯js引擎,unreal是纯c++引擎,unreal主打你只要用它就一定知道它的原理,新手不友好,unity是商业引擎,它是要收费的,要商业化的,而cocos的目标是全平台引擎,并且是开源的引擎。
那laya是否有update world position的接口呢,它可能节省了一些接口
其实这样看,cocos的功能是越来越完整了
对于新手来说,只要修改了坐标,世界坐标还是不对的,那么就是bug,而且和之前不兼容会断绝大部分项目升级的念头
最简单的例子就是label修改了string不会实时改变宽高,论坛上相关的提问很多,说明新手还是喜欢直观一点的
都这么多年了,还管小白呢,那些新手大多数是棋牌开发者。
这个我之前遇到了,现在的解决方案是自己measureText
这个问题,王者荣耀早期的解决方案都是不设限,你不要追求小白能解决了
???现在修改了坐标,世界坐标会立即更新?
在updateWorldVertex里更新的吧,他说应该是下一帧更新,反正不是直接更新的
对啊,看得我一脸懵,还以为官方把这块更新了呢
功能过于集中,没什么意义,弄的lateUpdate都成了引擎内置函数。就算unreal做到如此方便,又有多少人能使用呢,太复杂了,界面也不友好。
只有技术没有产品思维,做出来的东西没人用,就和中国早期游戏程序员做策划做出的游戏一样,和没有产品思维的人争论没有意义
花里胡哨的在干嘛,这也不是官方的、正确的、普通用户会使用的方法阿。
_ 开头的变量就是不想你不懂,又没看源码的时候去访问然后得出错误的结果。
const v = cc.v3();
temp1.getWorldPosition(v);
console.log("初始世界坐标:",v.toString());
temp1.setPosition(1500,1000);
temp1.getWorldPosition(v);
console.log("设置后世界坐标:",v.toString());
就老老实实简单地用官方接口阿,用你的话说,别造谣。
嗯,能不能拿到只是设计选择而已,大家都有自己的道理,这种争论没什么意义,所以我只贴出主流引擎的选择。
只是如果有人说现在 Cocos 是不能直接拿到最新值的,这个是技术错误,得纠正。
语法糖和包体是矛盾。我们最近为了减小点包体,用了各种手段。

官方源码,getWorldPosition内部是调用了updateWorldTransform的
我们一直讨论的是,修改坐标以后世界坐标是否会即时更新
只是setPosition,不调用updateWorldTransform,世界坐标是不会更新的
还不明白的话自己翻一下之前的楼层