默认:取平均值
优化:循环相加
单一动作的实现(跑)
Animator animators;
float aa = 10.0f;
void Start()
{
animators = GetComponent<Animator>();//获取Aniamtor
}
void Update()
{
if(animators)
{
float _speed = Input.GetAxis("Vertical") * aa;//获取轴向
animators.SetFloat("speed",_speed);//运用系统float类型变量
}
}
多个动作的组合(前后移动,左右旋转,跳跃)
Animator animators;
float aa1 = 0.1f;
float aa2 = 3f;
void Start()
{
animators = GetComponent<Animator>();//获取Aniamtor
}
void Update()
{if(animators)
{
if(Input.GetKeyDown(KeyCode.Space))//如果按下空格键
{
animators.SetBool("isbool",true);//传入跳动画为true
}
else if(Input.GetKeyUp(KeyCode.Space))//如果抬起空格键
{
animators.SetBool("isbool",false);//传入跳动画为false
}
float _speed = Input.GetAxis("Vertical") * aa1;//获取轴向
transform.Translate(0,0,_speed);//控制物体前后移动
float _sspeed = Input.GetAxis("Horizontal") * aa2;//获取轴向
transform.Rotate(0,_sspeed,0);//控制物体左右移动
animators.SetFloat("speed",_speed);//运用系统float类型变量
animatos.SetFloat("speed1",_sspeed);
}
}
动画系统——混合树
Animator animators;
float aa = 10.0f;
void Start()
{
animators = GetComponent<Animator>();//获取Aniamtor
}
void Update()
{
if(animators)
{
float _speed = Input.GetAxis("Vertical") * aa;//获取轴向
float _speed1 = Input.GetAxis("Horziontal") * aa;//获取轴向
animators.SetFloat("speed",_speed);//运用系统float类型变量
animators.SetFloat("idr",_speed1);
}
}
Animator遮罩(在Project视图里面创建)
动作(人物右手去抓东西)//如果运行时任务下沉,可添加Idle动作
Animator animators;
public bool isIK;
public Transform handpos;
void Start()
{
animators = GetComponent<Animator>();
}
void OnAnimatorIK()//获取IK动画的回调函数
{
if(animaors)
{
if(isIK)
{
if(handpos != null)
{
animators.SetIKPositionWeight(AvatarIKGoal.RightHand,1f);//权重,(AvatarIKGoal骨骼)
animators.SetIKRotationWeight(AvaterIKGoal.RightHand,1f);
animators.SetIKPosition(AvataIKGoal.RightHand,handpos.position);//位置
animators.SetIKRotation(AvatarIKGoal.RightHand,handpos.rotation);
}
else
{
animators.SetIKPositionWeight(AvatarIKGoal.RightHand,1f);//权重,(AvatarIKGoal骨骼)
animators.SetIKRotationWeight(AvaterIKGoal.RightHand,1f);
}
}
}
}