这一段时间在看Kinematic Character Controller插件,已经将插件的各状态改写成了状态机模式,和Unity的新的Input System完美融合了起来,后面我将专门开一个专栏,详细介绍一下Kinematic Character Controller插件的用法。
在上一期里面介绍了Multi-Parent Constraint约束组件,这个组件的约束对象会直接被移动到源对象的位置,如果约束对象是骨骼节点对象,则可能会造成难以描述的扭曲。
为什么呢?大家可以想一下,骨骼相互联接,构成了一个整体,骨骼由一个个的骨骼结点对象来表示,彼此之间要受到Avatar的Muscle系统的制约,因此单独对其中的一个骨骼进行移动,会导致其它相联接的骨骼的扭曲。要想移动骨骼,应该遵循反向动力学(IK)的规则,由末梢节点向根结点反向计算,才能保证合理性,这个过程就是先确定末梢节点对象的位置,然后再由反向计算,依次计算出前一个节点对象的合理位置,这个过程,由Two Bone IK Constraint约束组件来实现。
3、Two Bone IK Constraint
通过Two Bone IK Constraint约束组件可以将手或脚等末梢节点对象的位置确定下来,然后通过IK的反向动力学,依次计算出前一个骨骼节点对象的位置,整个过程在Avatar的Muscle系统的约束下进行,从而最大限度地避免出现不合理的现象,但是并不是不会出现关节的扭曲,如果对末梢骨骼过度地旋转,末梢骨骼在Avatar的Muscle系统的驱动下,也会带动相关联骨骼进行旋转,从而产生奇怪的扭曲。所以Two Bone IK Constraint约束组件的源对象的Target的位置应该适度,避免过远或太近,在出现关节奇怪扭曲时,Hint对象的作用会非常明显,通过调节Hint对象的位置,可以让手肘或膝盖的位置更加合理。
如果你希望将手或脚移动到某一个位置,可以有三种方式来达成:
第一种是添加Multi-Parent Con