You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用DOTween的DOMove方法移动子物体时出现异常缩放问题

问题解答

您好,我正在使用DOTween实现平滑变换效果,使用的代码如下:

Collider _leftForeArmBounds = leftForeArm.GetComponent<Collider>();
for (int i = 0; i < leftForeArmCubes.Count; i++)
    leftForeArmCubes[i].transform.DOMove(ExtensionMethods.RandomPointInBounds(_leftForeArmBounds), cubeMoveDuration);

上述代码中,列表leftForeArmCubes内的所有cube都是某一游戏对象的子物体。我遇到的问题是:这些cube在执行移动的过程中,缩放值会同步平滑增加至与父物体的缩放值一致。
我之前在开发其他游戏时使用过完全相同的代码,并未出现该问题,这也不是我第一次使用DOTween,我暂时无法定位问题成因,想请问这是DOTween的bug吗?

该现象不属于DOTween的已知bug,DOMove接口本身仅会修改Transform的位置属性,不会主动触发缩放值变更,可按以下步骤排查问题根源:

  • 排查残留补间冲突
    在调用DOMove之前先执行补间销毁逻辑,清理目标Transform上残留的未完成补间,避免之前的缩放补间与当前移动补间同步执行:
    for (int i = 0; i < leftForeArmCubes.Count; i++)
    {
        leftForeArmCubes[i].transform.DOKill();
        leftForeArmCubes[i].transform.DOMove(ExtensionMethods.RandomPointInBounds(_leftForeArmBounds), cubeMoveDuration);
    }
    
  • 确认坐标空间匹配问题
    DOMove默认操作世界坐标,如果父物体在移动补间执行的同时存在缩放/位移变换,子物体的局部坐标变换可能出现预期外的同步偏移,可改为显式操作局部坐标的DOLocalMove接口,同时可以强制锁定子物体缩放避免变更:
    // 锁定当前子物体缩放,避免其他逻辑修改
    leftForeArmCubes[i].transform.DOScale(leftForeArmCubes[i].transform.localScale, 0f);
    
  • 排除第三方逻辑干扰
    临时移除cube上挂载的其他自定义组件、UGUI布局组件等,确认是否有其他Update/FixedUpdate中的逻辑在同步修改子物体缩放值。

如果以上排查都没有解决问题,可以尝试更新DOTween到最新官方版本,重置DOTween的全局配置后再测试。

内容的提问来源于stack exchange,提问作者Kureyş Alp Kılıç

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 02:39:03