creator3.3.1没有找到节点bezier曲线运动

  • 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

image
那个ratio参数应该怎样穿参呢?我外部定义了一个_ratio=0.5来代替但是移动路径不太对,终点位置没有移动到end位置

额。。。 用错了呀 我这是一个静态方法你直接调用就好了返回的是一个tween对象 ratio是内部变量表示的是当前的插值你不要改呀

你怎么把我的方法拆了出来 直接复制上去不就行吗

只顾着复制了没看实现,谢谢大佬,能用了

1赞

嗯这样用就对了

正解 :+1:

把之前的方法新增回来就可以了,只是这个只能用于2d

1赞

这操作可以:+1: