我需要把x设为正常曲线,而y设为quadOut曲线,这样就能实现抛物线了,但是3.0只能设置postion的Vec3(),没法分别设x和y做抛物线啊
为了降低更新 Node Transform 信息的频率, Node 内部维护了一个 dirty 状态,只有在调用了可能会改变 Node Transform 信息的接口,才会将 dirty 置为需要更新的状态。
但目前的接口存在一定的限制,例如:通过 this.node.position 获取到的 position 是一个通用的 Vec3 。
当执行 this.node.position.x = 1 这段代码的时候,只执行了 position 的 getter ,并没有执行 position 的 setter 。由于 dirty 并没有更新,便会导致渲染时使用的节点的 Transform 信息没有更新。
目前,我们也不支持这样的调用,而是鼓励使用 setPosition 或 position 的 setter ,如下所示:
let _pos = new Vec3(0, 1, 0);
this.node.position = _pos; // 这里将通过 position 的 setter
this.node.setPosition(_pos); // 这里将通过接口 setPosition
https://docs.cocos.com/creator/manual/zh/tween/tween-interface.html?h=tween
没用啊,我试过了,tween里不能单独设置node.position.x
官方说不能,可以用action
什么action? 请问使用node.position.x = 设置坐标后,怎么让坐标更新?怎么更新 dirty状态?
看了下官方文档的 缓动示例 部分,有一个想法。
文档说缓动可以绑定 任意 对象,那么是否可类似示例中对颜色变化的缓动,自定义一个只有 y 属性的 class,对其实例进行缓动操作,然后在 onUpdate 里拿到缓动的进度,设置给节点的 position 的 y。
不过我没有试过,是刚翻文档产生的想法,楼主可以尝试下。
3.x 面向3d的,要习惯操作向量,
我习惯了,问题是这引擎不懂操作向量!连基本的抛物线、曲线都实现不了,还要自己重新写曲线!
曲线有特定api
这个是设置y的,你改下就设置x了
tween(this.node.position)
.to(0.2, {y: 20}, {
onUpdate: (target: Vec3, ratio: number)=>{
toggleItem.node.position = target;
},
easing: "expoOut"
}).start();