1.通过代码来控制blendshape的时候,会出现不能控制的情况
- 将控制blendshape的代码放在LateUpdate下面处理可以冲突
-
void LateUpdate() { if (isStart) { time += Time.deltaTime; if (time <= speed) { a = Mathf.Lerp(0, max, time / speed); } else if (time <= 2 * speed) { a = Mathf.Lerp(max, 0f, (time - speed) / speed); } else { time = 0; speed = Random.Range(0.3f, 0.5f); max = Random.Range(50f, 100f); } skinnedMeshRenderer.SetBlendShapeWeight(2, a); } }
2.如果通过Animator控制的时候需要创建Avatar Mask, 进行分来处理
- 创建Avatar Mask,然后分层处理
- 在Animator中设置不同的layer
- 代码播放
private void Awake(){ animator =GetComponent<Animator>(); faceLayer = animator.GetLayerIndex("FaceLayer"); } private void OnStart() //播放基础动作 animator.Play("idel"); //播放表情动作 animator.Play("happy",faceLayer); }