全局属性
FixTransform 刷新IK位置(不勾选该选项时,拖动骨骼点,人物会像在太空运动)
Weight 表示应用程度
Iterations 更新其他点的频率。当不用时可改为0,这样托动手时,只有手动,其他部位不会受到影响
Body属性
UseThighs 使用大腿肌肉,默认勾选,运动会缓和更柔和。
Spine 是腹部(胸腔)那一块位置。权重应为1,这样旋转拉伸时,胸腹会跟着身体动,胸腹不会因为其他位置变化而变形了
MaintainHeadRot 头部默认动画占的权重。当为0时,头部不跟着其他位置动,保持原动画。1时,很柔和了
Arm手臂
重点了解Target属性,比如Hand下的Target,拖动场景内物体至Target中,然后调整Position Weight权重为1,此时拖动Target物体,可以发现人物手部会跟随物体移动
代码控制
设置总权重
GetComponent().solver.SetIKPositionWeight(1);
设置左右Arm、左右腿
GetComponent().solver.SetChainWeights(FullBodyBipedChain.LeftArm,1, 1);
设置权重:Body位置、左右手、脚、肩膀、大腿Thigh
GetComponent().solver.SetEffectorWeights(FullBodyBipedEffector.Body,1, 1);
Target 瞄准的物体
Pole Target 物体的位置可以控制人物左右探头(如枪战游戏的左右探头效果)
Aim Transform 使用哪个部位瞄准目标(一般使用在枪口新建空物体,使用该空物体)
Axis 将aim target的轴指向目标,默认为z轴,一般不修改
weight 混合IK效果的权重,与clampWeight 配合使用
clampWeight solver的旋转取值。 0是自由旋转,1是完全固定到没有效果。
一般weight为1,clampWeight为0.5左右
Bones 拖入人体骨骼,一般为脊柱到脖子,然后调整各骨骼的Weight权重,表示人体随目标转动时各部位的影响程度,一般脖子越往下权重越低
使用该组件,人物需要有Full Body Biped IK
Layers 脚步检测的层级,需要与地形的层级一致
Max Step 最大抬脚高度
重点了解Spine--人物爬坡之类运动时全身骨骼都会有一定影响,在Spine中添加元素,选择EffectorType,调节Weight即可完成人物运动时该部位受影响权重
使用该系统需要在人物上加Full Body Biped IK组件,然后增加Interaction System组件,然后目标物体需要有Interaction Object组件,然后添加Weight Curves,选择Type并配置曲线,然后可以增加Event事件,可选择交互时暂停(Pause)和拾取(Pick Up)。
然后给人物添加简单脚本,如下
- public class FinalIKInteractionController : MonoBehaviour
- {
- public InteractionSystem Interaction_System;
-
- public InteractionObject Interaction_Object;
-
- void Update()
- {
-
- if(Input.GetKeyDown(KeyCode.Space))
- {
-
- //此处选择与物体交互使用哪个部位
- Interaction_System.StartInteraction(FullBodyBipedEffector.LeftHand,Interaction_Object, true);
- }
-
- else if (Input.GetKeyDown(KeyCode.B))
- {
- //取消暂停
- Interaction_System.ResumeAll();
- }
- }
- }
若需要手与物体贴合的更好,需要复制模型手部,调整手指旋转,并复制一份到目标物体下作为目标物体的子物体,然后给该子物体添加Interaction Target组件,将目标物体赋给Pivot,并调整Twist Axis旋转轴,可完成人物与物体交互时手部的自然感。
然后还可以给物体添加Animation动画,实现按按钮、开门等动画交互效果。
具体效果调整可参考Unity插件教程合集中FinalIk教程第5讲。
CCDIK适用于非人体骨骼,存在多个关节的物体,如多关节机械臂。
其中Target、Weight、等参数与之前的无异,主要是Bones需要将机械臂的关机分别加载进入并调节Weight即可,有时需要限制机械臂个骨骼节点的旋转,可以添加
Rotation Limit Angle(锥形范围限制),Rotation Limit Hinge(扇形范围限制)