/// <summary> /// 离开处理 /// </summary> public override void HandleForLeave() { if (!characterMoveCpt.IsAutoMoveStop()) { return; } switch (guestTeamIntent) { case CustomerIntentForGuestTeamEnum.GoToTeam: //一起离开处理 guestTeamIntent = CustomerIntentForGuestTeamEnum.WaitTeam; List <NpcAICustomerForGuestTeamCpt> listTeamMember = GetGuestTeam(); bool allReady = true; foreach (NpcAICustomerForGuestTeamCpt teamMember in listTeamMember) { if (teamMember.guestTeamIntent != CustomerIntentForGuestTeamEnum.WaitTeam) { allReady = false; } } if (allReady) { SceneInnManager sceneInnManager = GameScenesHandler.Instance.manager.GetSceneManager <SceneInnManager>(); Vector3 leavePostion = sceneInnManager.GetRandomSceneExportPosition(); foreach (NpcAICustomerForGuestTeamCpt teamMember in listTeamMember) { teamMember.guestTeamIntent = CustomerIntentForGuestTeamEnum.Together; teamMember.characterMoveCpt.SetDestination(leavePostion); } } break; case CustomerIntentForGuestTeamEnum.Together: //gameObject.SetActive(false); SetIntent(CustomerIntentEnum.None); gameObject.SetActive(false); gameObject.transform.position = new Vector3(0, -10000, 0); orderForCustomer = null; timeWaitSeat = 20; guestTeamIntent = CustomerIntentForGuestTeamEnum.Together; customerType = CustomerTypeEnum.Team; NpcHandler.Instance.builderForCustomer.listGuestTeamHide.Enqueue(gameObject); break; } }
/// <summary> /// 意图-离开 /// </summary> public override void IntentForLeave() { //如果还没有生成订单 (路上被招待) if (orderForCustomer == null) { characterMoveCpt.SetDestination(movePosition); //通知其他团队成员 List <NpcAICustomerForGuestTeamCpt> listTeamMember = GetGuestTeam(); foreach (NpcAICustomerForGuestTeamCpt teamMember in listTeamMember) { if (teamMember != this && teamMember.customerIntent != CustomerIntentEnum.Leave) { teamMember.SetIntent(CustomerIntentEnum.Leave); } } return; } //随机获取一个退出点 togetherPosition = InnHandler.Instance.GetRandomEntrancePosition(); guestTeamIntent = CustomerIntentForGuestTeamEnum.GoToTeam; togetherPosition += new Vector3(Random.Range(-1f, 1f), Random.Range(-1f, 1f)); characterMoveCpt.SetDestination(togetherPosition); }