IEnumerator TexCtrler() { faceState fState_crnt = faceState.idle; mouseState mState_crnt = mouseState.idle; while (true) { yield return(new WaitForSeconds(0.03f)); // 얼굴 변경시 얼굴 코루틴 실행 if (fState == faceState.idle && fState_crnt != fState) { fState_crnt = fState; IEnumerator fCorout = idleFaceCtrler(); StartCoroutine(fCorout); } else if (fState == faceState.bling && fState_crnt != fState) { fState_crnt = fState; IEnumerator fCorout = blingFaceCtrler(); StartCoroutine(fCorout); } else if (fState == faceState.smile && fState_crnt != fState) { fState_crnt = fState; IEnumerator fCorout = smileFaceCtrler(); StartCoroutine(fCorout); } else if (fState == faceState.close && fState_crnt != fState) { fState_crnt = fState; IEnumerator fCorout = closeFaceCtrler(); StartCoroutine(fCorout); } // 입 변경시 입 코루틴 실행 if (mState == mouseState.idle && mState_crnt != mState) { mState_crnt = mState; IEnumerator mCorout = idleMouseCtrler(); StartCoroutine(mCorout); } else if (mState == mouseState.talking && mState_crnt != mState) { mState_crnt = mState; IEnumerator mCorout = talkingMouseCtrler(); StartCoroutine(mCorout); } else if (mState == mouseState.close && mState_crnt != mState) { mState_crnt = mState; IEnumerator mCorout = closeMouseCtrler(); StartCoroutine(mCorout); } } }
void SwitchFace(faceState state) { switch (state) { case faceState.current: buttonFace.sprite = current; break; case faceState.locked: buttonFace.sprite = locked; break; case faceState.visited: buttonFace.sprite = visited; break; default: buttonFace.sprite = locked; break; } }
public void SetFace(faceState face) { defaultFace.SetActive(face == faceState.idle); sadFace.SetActive(face == faceState.sad); happyFace.SetActive(face == faceState.happy); }
// Update : clip 확인하고 state 수정 // IEnumerator TexCtrler : 0.03초마다 state 확인하고 코루틴 실행 // IEnumerator ~Ctrler : 각 얼굴/입 표정 담당 // Update is called once per frame void Update() { // check current animationclip clipInfo = mascot_animator.GetCurrentAnimatorClipInfo(0); clipName = clipInfo[0].clip.name; Fcount++; // 애니메이션클립이 바뀌었을때 한번만 실행 if (clipName == "m_starthi") { if (clipName_crnt != clipName) { clipName_crnt = clipName; fState = faceState.smile; mState = mouseState.talking; parti_flower.gameObject.SetActive(true); parti_flower.Play(); parti_spark.gameObject.SetActive(false); } } else if (clipName == "m_startwait") { if (clipName_crnt != clipName) { clipName_crnt = clipName; fState = faceState.idle; mState = mouseState.close; parti_flower.gameObject.SetActive(false); parti_spark.gameObject.SetActive(false); } } else if (clipName == "m_idlecute") { if (clipName_crnt != clipName) { clipName_crnt = clipName; fState = faceState.bling; mState = mouseState.idle; parti_flower.gameObject.SetActive(false); parti_spark.gameObject.SetActive(true); parti_spark.Play(); } } else if (clipName == "m_run") { if (clipName_crnt != clipName) { clipName_crnt = clipName; fState = faceState.smile; mState = mouseState.idle; parti_flower.gameObject.SetActive(false); parti_spark.gameObject.SetActive(false); } } else if (clipName == "m_talk") { if (clipName_crnt != clipName) { clipName_crnt = clipName; fState = faceState.close; mState = mouseState.talking; parti_flower.gameObject.SetActive(false); parti_spark.gameObject.SetActive(false); } } else { if (clipName_crnt != clipName) { clipName_crnt = clipName; fState = faceState.idle; mState = mouseState.idle; parti_flower.gameObject.SetActive(false); parti_spark.gameObject.SetActive(false); } } }