怎么修改Tween速度并重复执行动作?

实例化出来的多个角色需要在敌人和基地之间无限的重复移动,向敌人移动的动作是
this.toEnemyAction = cc.tween(this.node)
.to(this.moveDistance / this.speed, { position: this.enemyPos })
.start()
向基地移动的动作是
this.toHomeAction = cc.tween(this.node)
.to(this.moveDistance / this.speed, { position: this.spawnPoint.position })
.start()
现在想实现的是在点击每个角色之后,该角色会加速移动,持续几秒钟,然后恢复正常的速度。
我用cc.speed包action实现了加速效果,但是有废除提示,就很难受。
我搜了帖子,对于点击加速,有个_finalAction但貌似是私有变量?应该怎么实现加速效果?
还有点击事件应该用什么方法?

如果用action实现的话,cc.sequence类型又不对了。。
let toEnemy = cc.speed(this.toEnemyAction, 2);
let toHome = cc.speed(this.toHomeAction , 2);
ler seq = cc.sequence(toEnemy,toHome);

以前C++可以重载重写 很好实现 现在不清楚,也可以直接在引擎代码处重载几个 公开几个方法 就可以控制了 麻烦些 类似于自定义引擎

文档里有提到,progress的用法,应该可以控制速度。https://docs.cocos.com/creator/manual/zh/scripting/tween.html

如果是移动中点击加速,或许该考虑下update自己按状态每帧刷新了
如果用tween的话,可能得点击时停止并更换成加速动作,加速结束后再更换回来,感觉这种方案太繁琐了

tween可以自定义progress方法 (start,end,current, ratio)=>{
return start+(end-start)ratiothis.speed
},可以试试修改this.speed的值?

start这几个参数什么意思。。文档也没说,如果是正在执行的缓动,怎么再执行progress这个新的缓动。。

用update怎么才能让角色移动到固定点?

我知道了,得想搞出方向向量,我先试试

移动的速度和方向,然后单位可以存一个目标点,调用移动时做对比,如果超出了就停止在那个点上

使用缓动系统 · Cocos Creator

仔细看文档,能够满足你的需求…不信就算了

start表示属性的初始值,end表示属性的最终值,current表示当前值,ratio是比例,表示这个缓动过程进行到什么阶段了。progress不是一个新的缓动,它是你控制某个属性值变化速度的函数,这在文档里有示例,你想修改速度,只需要修改这个函数里某个变量的值就可以了,就是我上面提到的this.speed,你在代码里修改这个speed的值,缓动的速度不就跟着变了吗。。

1赞

如果可行确实更棒

不行,有问题,不知道是不是我写法有问题,如果这么操作的话,到终点时根本没有停止


而且还有个问题,speed>1时,会越来越快,并不是固定的值

但是确实是可以动态控制速度的。我只是随便写的个返回公式。

我已经用update实现了,比这个要简单许多,直接算出方向向量,再移动就可以了。

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