IEnumerator StorySequence() { switch (StoryState) { case State.執行任務: while (StoryState == State.執行任務) { yield return(Lee.StartTalkNpcSequence(new string[] { "WaitPos(Player,X-22.5Y0)", "CheckPlayer(找隊長說話,2)" })); } break; default: break; } yield break; }
void ChangeStoryState(State _state) { StoryState = _state; //改變state後的一次性處理 switch (StoryState) { case State.指派任務: Lee.StartTalkNpcSequence(new string[] { "CamFree(true)", "Wait(0.1)", "PlayerControl(2,false)", "CamAnim(4.8,X-27.6Y3.3,3)", "Wait(4)", "CamFree(false)", "PlayerControl(2,true)", "CheckPlayer(開場,2)" }); break; case State.執行任務: StartCoroutine(StorySequence()); Kai.SetAnim("idle"); Kai.SetMove(false, false, true); Kai.StartTalkNpcSequence(new string[] { "Move(X8.88Y12.5)", "Face(Right)", "Wait(0.2)", "Anim(Interact)", "CheckPlayer(29f碰面,2)", "Plot(ChangeState)" }); break; case State.回報任務: dialGod.CheckDialogComplete(); //reset dialog complete state break; case State.結束: ChangeScene(false, 3, 0); break; default: break; } }