码迷,mamicode.com
首页 > 编程语言 > 详细

unityIK动画系统和matchyTarget

时间:2017-11-12 12:29:49      阅读:191      评论:0      收藏:0      [点我收藏+]

标签:==   round   match   参数   get   系统   完全   col   void   

unityIK动画系统和matchyTarget

 

一:matchyTarget

 anim.MatchTarget(matchtarget,Quaternion.identity,AvatarTarget.LeftHand,new MatchTargetWeightMask(Vector3.one,0),0.32f,0.4f);

//作用是将骨骼上特点的一些点,在动画播放的过程中的某一个特定时刻,放在自己想放的点上。

//参数1:身体部位将放置到的目标点;参数二:身体部位将旋转的位置;参数三:身体的部件;参数四:匹配位置的权重和旋转的权重;参数五:动画开始剪辑的时间(可以百分比);参数六:身体部位到达的动画时间。

 

二:IK动画的设置

以左右手举例

事先需要为需要的动画层设置骨骼遮障,勾选IKpass等

public Transform lefthand;

public Transform right hand;

private void OnAnimatorIK(int layerIndex)//该函数会一直执行,且传递参数layerindex=勾选IKpass的图层索引
{
if (layerIndex==1) {
int weight = anim.GetBool("handID") ? 1 : 0;
anim.SetIKPosition(AvatarIKGoal.LeftHand,lefthand.position);  //用来设置左手与目标位置的位置
anim.SetIKRotation(AvatarIKGoal.LeftHand, lefthand.rotation); //用来设置左手与目标位置的旋转
anim.SetIKPosition(AvatarIKGoal.RightHand, righthand.position);//同理
anim.SetIKRotation(AvatarIKGoal.RightHand, righthand.rotation);//同理
anim.SetIKPositionWeight(AvatarIKGoal.LeftHand,weight);//用来设置左手到目标位置的权重,0不播放,1完全到达;
anim.SetIKRotationWeight(AvatarIKGoal.RightHand,weight);//同理

}
}

然后需要在运行游戏的时候去调节事先定义好的俩目标位置,来使手放在该放的位置,调节目标位置会影响下次运行效果,正好利用这一特点;

 

unityIK动画系统和matchyTarget

标签:==   round   match   参数   get   系统   完全   col   void   

原文地址:http://www.cnblogs.com/wenzeBlog/p/7821260.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!