- Creator 版本: 3.3.1
问题描述:在creator3.0.0之前有action可以直接用bezierTo()等接口实现节点按照贝塞尔曲线运动,新升级到3.3.1之后弃用action改用tween没有找到怎样使用贝塞尔曲线的接口和方法,也没找到代替的方案,求各位大佬给个方案,谢谢
public static bezierTo(target: any, duration: number, c1: Vec3, c2: Vec3, 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: Vec3, cp: Vec3, 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;
let z = (1 - t) * (1 - t) * p1.z + 2 * t * (1 - t) * cp.z + t * t * p2.z;
return v3(x, y, z);
};
opts.onUpdate = (arg: Vec3, ratio: number) => {
target.position = twoBezier(ratio, c1, c2, to);
};
return tween(target).to(duration, {}, opts);
}
调用
this.bezierTo(plyNode, 3, v3(1, 1, 3), v3(-2, 1, 2), v3(-1, 1, 0), null);
大佬!运行不起来啊,我用的creator3.3.1,把你的代码复制过去报错的地方改了运行没反应啊
我这个是tween 要start
额。。。 用错了呀 我这是一个静态方法你直接调用就好了返回的是一个tween对象 ratio是内部变量表示的是当前的插值你不要改呀
你怎么把我的方法拆了出来 直接复制上去不就行吗
只顾着复制了没看实现,谢谢大佬,能用了
嗯这样用就对了
正解 
这操作可以



