Health/Assets/_VoiceAssistant/Scripts/Assistant/TakeCare.cs

55 lines
2.0 KiB
C#

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class TakeCare : MonoBehaviour
{
public ExpressionRecognition expressionRecognition;
CarAssistant carAssistant;
private void Awake()
{
carAssistant = FindObjectOfType<CarAssistant>();
expressionRecognition.onRecognizingExpression += ProcessExpression;
}
public void ProcessExpression(FaceInfo.Expression expression)
{
Debug.Log("处理表情:" + expression);
switch (expression)
{
case FaceInfo.Expression.Neutral:
break;
case FaceInfo.Expression.Happy://播放彩蛋
carAssistant.animController.Dance();
carAssistant.expression = CarAssistant.Expression.Happy;
carAssistant.chatBox.SetText("", CarAssistant.Expression.Happy);
break;
case FaceInfo.Expression.Sad:
case FaceInfo.Expression.Disgust:
case FaceInfo.Expression.Angry:
//问候
StopAllCoroutines();
carAssistant.PlayPresetAudioClip(TTS.PresetAudio.LookBad);
carAssistant.expression = CarAssistant.Expression.Smile;
StartCoroutine(TransitionToStatusDelay(carAssistant.statusManager.listening, 2f));
break;
case FaceInfo.Expression.Suprised:
//问候
StopAllCoroutines();
carAssistant.PlayPresetAudioClip(TTS.PresetAudio.LookSurprised);
carAssistant.expression = CarAssistant.Expression.Doubt;
StartCoroutine(TransitionToStatusDelay(carAssistant.statusManager.listening, 2f));
break;
case FaceInfo.Expression.Fearful:
break;
default:
break;
}
}
IEnumerator TransitionToStatusDelay(AssistantStatus status,float delay)
{
yield return new WaitForSeconds(delay);
carAssistant.statusManager.MakeTransition(status);
}
}