反向动力学inverse kinematics
-
反向动力学,简称ik。相较于正向动力学,反向动力学旨在子级对父级产生的影响。
-
使用ik,可以实现根据目标位置或方向来计算并调整角色的关节(骨骼)链,以使角色的末端(如手臂、腿部等)达到预期的位置或取向。
-
通过使用 unity 的 ik 功能,你可以实现各种复杂的角色动画效果,如角色抓取、足部对齐、手臂跟随等。
前言:使用ik时需要到动画器图层设置勾选ik选项
一、实现角色头部持续看向某物体
1. 在玩家角色的脚本中添加所看向的目标物体
public gameobject target;
public transform target_trans;
2. 将所视的目标物体拖拽绑定
3. 编写有关ik的方法 onanimatorik
private void onanimatorik(int layerindex)//参数layerindex设置动画层数
{
animator.setlookatweight(1);//设置头部权重
animator.setlookatposition(target_trans.position);//看向目标物体的位置
}
4. 实现效果如下 :移动角色时注释立方体
二、实现手部ik动作
private void onanimatorik(int layerindex)//参数layerindex设置动画层数
{
//手ik位置权重
animator.setikpositionweight(avatarikgoal.righthand,1);
//手ik旋转权重
animator.setikrotationweight(avatarikgoal.righthand, 1);
//设置右手ik指向
animator.setikposition(avatarikgoal.righthand, target_trans.position);
//设置右手ik旋转
animator.setikrotation(avatarikgoal.righthand, target_trans.rotation);
}
发表评论