Unity中如何用DOTween让Tweener通过OnUpdate和ChangeEndValue实现固定时间跟随
需求
让物体1在固定时间内跟随物体2,当物体2反向移动时,物体1需提速以维持总移动时长固定。
问题1:代码无效果,obj1未发生移动
使用以下代码时,物体1完全没有移动:
var tweener = obj1.transform.DOMove(obj2.transform.position, 5f); tweener.OnUpdate(() => { tweener.ChangeEndValue(obj2.transform.position); });
问题2:物体1移动但速度递减,永远无法到达目标
使用以下代码时,物体1虽能跟随物体2移动,但速度逐渐降低,永远无法到达目标位置。推测是调用ChangeValues时将时长重置为了初始的5秒:
var tweener = obj1.transform.DOMove(obj2.transform.position, 5f); tweener.OnUpdate(() => { tweener.ChangeValues(obj1.transform.position, obj2.transform.position); });
潜在可行方案(缺少API支持)
如果能获取tweener的剩余时长,以下代码应该可以正常工作,但目前未在文档中找到获取剩余时长的方法:
var tweener = obj1.transform.DOMove(obj2.transform.position, 5f); tweener.OnUpdate(() => { tweener.ChangeEndValue(obj2.transform.position); tweener.ChangeValues(obj1.transform.position, obj2.transform.position, newDuration: tweener.currentRemainingDuration); });
内容的提问来源于stack exchange,提问作者ArtS
相关产品推荐
相关产品推荐

