3.0缓动系统如何单独对scaleX,scaleY自定义progress函数?

3.0缓动系统如何单独对scaleX,scaleY自定义progress函数

2.x如下代码可以单独对scaleX,scaleY自定义progress函数
cc.tween().to(1.0, {
scaleX: {
value: this.originalScale,
progress: (start: number, end: number, current: number, t: number) => {
return XXX;
}
},
scaleY: {
value: this.originalScale,
progress: (start: number, end: number, current: number, t: number) => {
return XXX;
}
}
}).start();
3.0版本如何翻译上面代码呢?求解答。

没有大神解答一下吗?
查找了3.0的官方示例的自定义tween的progress代码如下:
const scaleTween = tween(this.node)
.to(2, { scale: new Vec3(3, 2, 1) }, {
progress: (start: number, end: number, current: number, ratio: number) => {
return start + (end - start) * ratio;
}
})
只能统一对scale三个向量同时都生效啊,怎么分别自定义呢?

Vec3.multiScalar(numer) 将就着用吧

这个怎么用呢

public static bezierTo(target: any, duration: number, c1: Vec2, c2: Vec2, to: Vec3, opts: any) {
opts = opts || Object.create(null);
/**
 * @desc 二阶贝塞尔
 * @param {number} t 当前百分比
 * @param {} p1 起点坐标
 * @param {} cp 控制点
 * @param {} p2 终点坐标
 * @returns {any}
 */
let twoBezier = (t:number, p1: Vec2, cp: Vec2, p2: Vec3) => {
    let x = (1 - t) * (1 - t) * p1.x + 2 * t * (1 - t) * cp.x + t * t * p2.x;
    let y = (1 - t) * (1 - t) * p1.y + 2 * t * (1 - t) * cp.y + t * t * p2.y;
    return v3(x, y, 0);
};
opts.onUpdate = (arg: Vec3, ratio: number) => {
    target.position = twoBezier(ratio, c1, c2, to);
};
return tween(target).to(duration, {}, opts);

}

参考一下这个 用法 看看 可以吗 在 Update 里面 写 参数穿空

1赞

感谢感谢感谢