Пример #1
0
    /// <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);
    }
Пример #2
0
    /// <summary>
    /// 意图-离开
    /// </summary>
    public virtual void IntentForLeave()
    {
        //随机获取一个退出点
        SceneInnManager sceneInnManager = GameScenesHandler.Instance.manager.GetSceneManager <SceneInnManager>();

        movePosition = sceneInnManager.GetRandomSceneExportPosition();
        characterMoveCpt.SetDestination(movePosition);
    }
Пример #3
0
 /// <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);
 }
Пример #4
0
    /// <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);
        }
    }
Пример #5
0
 /// <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);
 }
Пример #6
0
    /// <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;
        }
    }