3.1.0 缓动怎么使用贝塞尔曲线运动

升级了3.1.0,不得不说,实在是不好用。3D和2D合并在一起之后,搞得2D的开发非常不方便,且文档好乱啊。建议你们先暂停功能开发,先空一周时间把文档补全先吧?

又是一个从文档中看不到答案的问题,在3.1.0中怎么对2D节点使用贝塞尔曲线缓动,在2.3.3的时候是这样使用的

cc.bezierTo(1, [beginPosition, midPosition, endPosition]) .easing(cc.easeQuadraticActionOut())

现在废弃了action,说是已经将动作系统和缓动系统整合了,但是很多动作系统的方法都不见了。。。

3赞

3.1.0废弃了action吗

不过还是可以通过tween来调用bezier吧
action我在项目里也不用了

大佬求教,怎么在3.1.0里 tween调bezier :scream_cat:

cc.tween(node).bezierTo(time, startPosition, convertPosition, endPosition, easinng or not).start()

我们用的不是一个版本吧,在我这cc.tween(node).bezierTo === undefined

cc.tween(node).then(cc.bezierTo(1, [beginPosition, midPosition, endPosition]) ).start();

我用的是2.4

好吧,3.1都没啦。。。

在3.1 cc.bezierTo === undefined :sob:

tween(this.node) .to(1, {scale: new Vec3(2, 2, 2), position: new Vec3(5, 5, 5)}) .call(() => { console.log(‘This is a callback’); }) .by(1, {scale: new Vec3(-1, -1, -1)}, {easing: ‘sineOutIn’}) .start()
https://docs.cocos.com/creator/3.1/manual/zh/tween/?h=tween

呃,您这是串行的,不行吧?
我也想到是不是可以变做直线的缓动,然后同时做一个垂直方向上的相对缓动,加上 easing 达到贝塞尔的效果,但是事实证明,这是行不通的。

我尝试在给节点增加两个方向上的移动,类似下面这样:

cc.tween(coin)
.parallel(
cc.tween().to(1, { position: new cc.Vec3(toPoin.x, toPoin.y, 0) }),
cc.tween().by(0.5, { position: midPoin }).by(0.5, { position: new cc.Vec3(-midPoin.x, - midPoin.y, 0) })
).start();

但是实际上这样只有by的移动,to的被忽略了,所以我猜测应该是对同一属性只有一个缓动能生效。。
然后换成两个节点,父节点做起点到终点的直线运动,子节点做垂直方向上的相对运动。但是父节点跟子节点的运动根本不能同步起来,所以也是不可取了。

所以选择放弃,回退2.4
3.1白白

// 可以照着2.4的源码,自己添加上去就行了
   
import {Tween, bezier} from 'cc'
class myTween extends cc.Tween {
    constructor(target) {
        super();
        super.target(target);
    }

    bezierTo(duration, c1, c2, to, opts) {
        let c0x = c1.x,
            c0y = c1.y,
            c1x = c2.x,
            c1y = c2.y;
        opts = opts || Object.create(null);
        opts.progress = function (start, end, current, t) {
            current.x = bezier(start.x, c0x, c1x, end.x, t);
            current.y = bezier(start.y, c0y, c1y, end.y, t);
            return current;
        };
        return this.to(duration, { position: to }, opts);
    }
}
1赞

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。