/// <summary> /// 意图-散步 /// </summary> public void IntentForWalk() { SceneInnManager sceneInnManager = GameScenesHandler.Instance.manager.GetSceneManager <SceneInnManager>(); if (transform.position.x > 0) { //如果角色在右边生成 出口则设置为左边 movePosition = sceneInnManager.GetRandomSceneExportPosition(1); } else { //如果角色在左边生成 出口则设置为右边 movePosition = sceneInnManager.GetRandomSceneExportPosition(0); } characterMoveCpt.SetDestination(movePosition); }
/// <summary> /// 意图-离开 /// </summary> public virtual void IntentForLeave() { //随机获取一个退出点 SceneInnManager sceneInnManager = GameScenesHandler.Instance.manager.GetSceneManager <SceneInnManager>(); movePosition = sceneInnManager.GetRandomSceneExportPosition(); characterMoveCpt.SetDestination(movePosition); }
/// <summary> /// 意图-离开 /// </summary> protected void SetIntentForLeave() { if (leavePosition == Vector3.zero) { SceneInnManager sceneInnManager = GameScenesHandler.Instance.manager.GetSceneManager <SceneInnManager>(); leavePosition = sceneInnManager.GetRandomSceneExportPosition(); } movePosition = leavePosition + new Vector3(Random.Range(-0.5f, 0.5f), Random.Range(-0.5f, 0.5f)); SetCharacterMove(movePosition); }
/// <summary> /// 设置全体意图 /// </summary> public void SetTeamIntent(RascalIntentEnum rascalIntent) { List <NpcAIRascalCpt> listNpc = NpcHandler.Instance.builderForEvent.GetRascalTeamByTeamCode(teamCode); if (rascalIntent == RascalIntentEnum.Leave) { SceneInnManager sceneInnManager = GameScenesHandler.Instance.manager.GetSceneManager <SceneInnManager>(); leavePosition = sceneInnManager.GetRandomSceneExportPosition(); } foreach (NpcAIRascalCpt itemNpc in listNpc) { itemNpc.leavePosition = leavePosition; itemNpc.SetIntent(rascalIntent); } }
/// <summary> /// 意图-离开 /// </summary> protected void SetIntentForLeave() { InnHandler.Instance.rascalrQueue.Remove(this); npcFight = null; characterLifeCpt.gameObject.SetActive(false); objFightShow.SetActive(false); objRascalSpaceShow.SetActive(false); //随机获取一个退出点 如果已经有团队的点则不需要获取 if (leavePosition == Vector3.zero) { SceneInnManager sceneInnManager = GameScenesHandler.Instance.manager.GetSceneManager <SceneInnManager>(); leavePosition = sceneInnManager.GetRandomSceneExportPosition(); } movePosition = leavePosition + new Vector3(Random.Range(-0.5f, 0.5f), Random.Range(-0.5f, 0.5f)); characterMoveCpt.SetDestination(movePosition); }
/// <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; } }