[3.8.4 升级必读]:Node 的一些 set 接口行为的修正

setPosition也试过没用,对摄像机无效。只对渲染节点有效。

3.8.4根本控制不了摄像机的移动,属于无解的bug

1赞

你可以试试我上面提供的脚本在你的项目里。我不清楚你是怎么改相机的。

1赞

有代码截图,就是创建一个全局的targetPos:Vec3。
然后把摄像机移动的新位置线计算到targetPos里面;

再执行:
camera.node.position = targetPos;

camera.node.setPosition(targetPos.x,targetPos.y,targetPos.z);
都不行。

这个camera是Canvas的渲染camera,不是渲染3d场景的camera。

按理说,targetPos是自己new出来的一个vec3对象,和camera的position不是同一个对象,按你们的规则应该是赋值能正常渲染才对,结果不行

1赞

position …
3.8.5啥时候出 :joy:

1赞

太好了能改回来 你们可以新增一个接口按新的方式做 喜欢用新的接口的人自己去用 因为很多事老项目升级过来的代码太多不太好排查

1赞

新接口可以这样说明效率更好但是使用的方式不一样 让写业务的人自己去选择 而不要引擎帮我们选择

1赞

在新行为的基础上保证性能的同时,再封装一层兼容原有的使用方式的接口,不是既能兼容旧方式还能使使用更加的优雅吗?
既然设置x/y/z需要new v3(),再set回去,那么这个行为引擎帮用户封装成接口其实和用户自己每次去写不是一样的吗?
所以我觉得完全可以由引擎来处理掉这些问题。

1赞

是相等的。引用类型,值修改了,引用这个对象的都被修改了。重复设置回去的时候其实里面的值也和外面的一样了,所以跳过了设置值时候该触发的动作。

1赞

是的,你这里的使用是会起效的。可以确定的是不是这里引起的问题。但是我不清楚别的地方是否也有影响到。

1赞

刚用cocos那会被position搞得焦头烂额,setPosition经常搞不懂为什么不生效,worldPosition的逻辑更是灾难

个人感觉越来越难用

请问什么时候会有3.8.5社区版

可以在github下载

其实想想,不做兼容的目的也是为了引擎干净,不然做很多容错 也不太好

有的,代码一直有同步github,只是想问下什么时候会有社区版

我提了一个 PR。

这个设置分量功能,的确大部分游戏都需要用到,如果不支持,基本上就没法跟 tween 结合分别修改不同的分量了。索性大家都去 hack,还不如直接把这个功能加回来。

感觉可以先把最常用的 x, y, z, worldPositionX, worldPositionY, worldPositionZ 加回来。

另外,为了保持跟 2.x 的行为一致性,设置某个分量,还是会触发 TRANSFORM_CHANGED 事件的 emit。

6赞

出院!!!

请收下我的膝盖

赞赞赞,这样就方便多了,性能是否会有影响?官方一般怎么测接口性能的我们自己测也行

嗯,3.8.6 beta0 快发了。到时候帮忙测看看。

内部提测后,我们也会过下性能相关的测试例的。