为了实现这个功能,我想在现有的资产上添加一个吊索滑翔机制。实际上,吊索滑翔的效果是相当平滑的(尽管我仍在尝试找到合适的速度,速度不仅仅是物理学上的建议),但我想让玩家能够拿着一个物品,例如一根杆子或一把铁锤,利用它来吊索滑翔。由于现有的资产设置方式,我认为我需要使用OnAnimatorIK而不是AnimationRigging包或FinalIK(我尝试其他方法时,我的IK被覆盖)。我有以下信息可供参考,例如手持物体与手骨的位置和旋转偏差(这有助于考虑不同模型的不同手部方向)和用于吊索滑翔的杆子的位置。最初,我认为我可以这样做:
Transform leftHandTransform = _animator.GetBoneTransform(HumanBodyBones.LeftHand);
Vector3 rodOffset = CurrentZipLineObject._attachPoint.position - (leftHandTransform.position + CurrentZipLineObject.defaultLocalPos);
Vector3 handTarget = _zipPosition - rodOffset;
_animator.SetIKPosition(AvatarIKGoal.LeftHand, handTarget);
这在玩家位置平行于杆子时有效,但当玩家位置有垂直或水平偏差时,会变得明显,这不匹配。有一个让人怀疑的感觉,我需要调整IK的旋转,但我的脑子似乎无法保持所有这些向量的方向。
评论 (0)