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

Unity自定义Animation-Rigging约束:带偏移的平滑跟随失效

实现带初始偏移的平滑跟随约束

核心思路

要同时实现保留初始相对偏移和平滑跟随,关键是先记录约束对象与源对象的初始位置差,再通过阻尼插值算法逐步更新约束对象位置,而非直接赋值。

代码修改实现

1. 调整Job结构体与ProcessAnimation方法

public struct MyDampTransformJob : IAnimationJob
{
    public ReadOnlyTransformHandle sourceTransform;
    public TransformHandle constrainedTransform;
    
    // 初始位置偏移(约束对象相对于源对象的初始位置差)
    public Vector3 initialOffset;
    // 阻尼时间,控制平滑速度(值越小跟随越灵敏)
    public float dampTime;

    public void ProcessAnimation(AnimationStream stream)
    {
        // 获取源对象当前世界位置
        Vector3 sourceWorldPos = sourceTransform.GetWorldPosition(stream);
        // 计算目标位置:源位置 + 初始偏移,保证相对位置不变
        Vector3 targetPos = sourceWorldPos + initialOffset;
        
        // 获取约束对象当前世界位置
        Vector3 currentPos = constrainedTransform.GetWorldPosition(stream);
        
        // 使用SmoothDamp实现平滑插值,基于动画帧的deltaTime计算
        Vector3 smoothedPos = Vector3.SmoothDamp(currentPos, targetPos, ref Vector3.zero, dampTime, float.PositiveInfinity, stream.deltaTime);
        
        // 赋值平滑后的位置
        constrainedTransform.SetWorldPosition(stream, smoothedPos);
    }

    public void ProcessRootMotion(AnimationStream stream) { }
}

2. 初始化初始偏移

在约束组件的CreateJob方法中,启动时计算并赋值初始偏移:

public override IAnimationJob CreateJob(Animator animator, ref Skeleton skeleton, RigBuilder rigBuilder)
{
    var job = new MyDampTransformJob();
    
    // 绑定TransformHandle
    job.sourceTransform = rigBuilder.BindHandle(sourceTransform);
    job.constrainedTransform = rigBuilder.BindHandle(constrainedTransform);
    
    // 计算初始偏移:约束对象初始位置 - 源对象初始位置
    job.initialOffset = constrainedTransform.position - sourceTransform.position;
    job.dampTime = 0.1f; // 可在Inspector面板暴露该参数供调试
    
    return job;
}

注意事项

  • 初始偏移仅在约束启动时计算一次,避免每一帧重新计算导致偏移丢失
  • 若需要局部空间内的跟随,将GetWorldPosition/SetWorldPosition替换为GetLocalPosition/SetLocalPosition,偏移值也改用局部空间计算
  • dampTime参数可根据需求调整:值越小,跟随速度越快;值越大,平滑效果越明显

内容的提问来源于stack exchange,提问作者KilledByCheese

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 05:28:13