美文网首页
Animator动画融合、IK

Animator动画融合、IK

作者: _Youcai | 来源:发表于2019-06-22 18:17 被阅读0次

    动画融合:在特殊情况下需要播放俩个动画的内容,且不增加动画数量,可以应用动画融合处理,比如移动攻击等

    1.首先创建一个Avatar Mask


    image.png

    2.在Inspector界面选择骨骼源,并选择该骨骼遮罩所控制的绑点


    image.png image.png

    3.在Animator内增加新的层级设置权值为1,并将骨骼遮罩赋值进去

    权值大的层级的骨骼遮罩绑点动作将覆盖权值低的绑点动作

    层级的结构是一样的,都会包含Any State和Entry 并且游戏运行时每个层级都会同时从Entry运行

    image.png

    4.设置好对应的动画后可以进入游戏测试了!!

    IK动画:反向动力学,根据骨骼的终结点来推算其他父节点位置的一种方法,比如通过手的位置推算手腕胳膊肘的位置。

              unity中可以设置IK的位置就是5个,分别是:头、左右手、左右脚
    

    1.在设置IK的动画层勾选IK Pass 并保证动画Rig的类型为humanoid


    image.png image.png

    2.在代码中添加OnAnimatorIK回调


    image.png

    设置了动画类型和勾选IK pass后的层根据回调方法进行IK行为的处理

    AvatarIKGoal类枚举

    {
    
        LeftFoot = 0,  //左脚
    
        RightFoot = 1,  //右脚
    
        LeftHand = 2,  //左手
    
        RightHand = 3  //右手
    
    }
    

    //设置骨骼的权重,1表示完整的骨骼,如果是0.5哪么骨骼权重就是一半呢,可移动或旋转的就是一半

    animator.SetIKPositionWeight(AvatarIKGoal.LeftHand, 1f);

    animator.SetIKRotationWeight(AvatarIKGoal.LeftHand, 1f);

    //设置右手根据目标点而旋转移动父骨骼节点 rightHandObj为父骨骼节点

    animator.SetIKPosition(AvatarIKGoal.RightHand, rightHandObj.position);

    animator.SetIKRotation(AvatarIKGoal.RightHand, rightHandObj.rotation);

    //头部的IK行为可以通过以下方法进行,

    animator. SetLookAtPosition(目标坐标)

    animator. SetLookAtWeight(参数解读参考下图)

    image.png

    相关文章

      网友评论

          本文标题:Animator动画融合、IK

          本文链接:https://www.haomeiwen.com/subject/wkmvqctx.html