问题:动画还原僵硬,权重移动太剧烈。需要做一个缓动。
通过代码控制权重:
private float lerpTarget;//权重
public void OnAttackEnter()
{
pi.inputEnabled = false;
// lockPlanar = false;
lerpTarget = 1.0f;
}
public void OnAttack1hAUpdate()
{
thrustVec = model.transform.forward * anim.GetFloat("attack1hVelocity");
float currentWeight = anim.GetLayerWeight(anim.GetLayerIndex("attack"));//找到此刻的权重
currentWeight = Mathf.Lerp(currentWeight, lerpTarget, 0.3f);//此刻的权重 以30%当速度增长
anim.SetLayerWeight(anim.GetLayerIndex("attack"),currentWeight);//用查找层级索引的方法修改层级的权重
}
public void OnAttackIdleEnter()
{
pi.inputEnabled = true;
// lockPlanar = false;
//anim.SetLayerWeight(anim.GetLayerIndex("attack"), 0);
lerpTarget = 0;
}
public void OnAttackIdleUpdate()
{
float currentWeight = anim.GetLayerWeight(anim.GetLayerIndex("attack"));//找到此刻的权重
currentWeight = Mathf.Lerp(currentWeight, lerpTarget, 0.3f);//此刻的权重 以30%当速度增长
anim.SetLayerWeight(anim.GetLayerIndex("attack"), currentWeight);//用查找层级索引的方法修改层级的权重
}
正阳可以使权重平滑过渡。