Exemplo n.º 1
0
    // 寻路找怪处理
    void FindEnamyTick()
    {
        if (m_bNotEnamyNpcFlag != 0)
        {
            return;
        }
        //如果有目标名字则寻找该目标,进行交互
        if (m_Path.AutoSearchTargetName != "")
        {
            Obj_Character obj = Singleton <ObjManager> .GetInstance().FindObjCharacterInSceneByName(m_Path.AutoSearchTargetName);

            if (obj && obj.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_NPC)
            {
                Obj_NPC objNpc = obj as Obj_NPC;
                //根据目标NPC的势力确认是对话还是攻击
                if (Reputation.IsEnemy(objNpc) || Reputation.IsNeutral(objNpc))
                {
                    Singleton <ObjManager> .GetInstance().MainPlayer.StopMove();

                    m_Path.AutoSearchPosCache.Clear();
                    m_Path.ResetPath();
                    IsAutoSearching = false;
                    m_EndPointCache.Clean();

                    //如果是地方NPC,则开始攻击
                    Singleton <ObjManager> .GetInstance().MainPlayer.OnSelectTarget(objNpc.gameObject);

                    Singleton <ObjManager> .GetInstance().MainPlayer.OnEnterCombat(objNpc.GetComponent <Obj_Character>());

                    m_bNotEnamyNpcFlag = 1;

                    // 杀怪任务寻路结束,如果没在自动战斗状态,则进入自动战斗
                    Obj_MainPlayer mainPlayer = Singleton <ObjManager> .GetInstance().MainPlayer;

                    if (null != mainPlayer && !mainPlayer.GetAutoCombatState() && Singleton <ObjManager> .Instance.MainPlayer.IsOpenCabalAuto)
                    {
                        mainPlayer.EnterAutoCombat();
                        GameManager.gameManager.MissionManager.MissionAutoCombat = true;
                    }
                }
                else
                {
                    m_bNotEnamyNpcFlag = 2;
                    return;
                }
            }
        }
    }
Exemplo n.º 2
0
    //自动寻路结束
    void Finish()
    {
        //如果有结束后的回调事件则回调
        if (null != m_Path.FinishCallBackEvent && Games.GlobeDefine.GameDefine_Globe.EVENT_DEFINE.EVENT_INVALID != m_Path.FinishCallBackEvent.EventID)
        {
            Singleton <EventSystem> .GetInstance().PushEvent(m_Path.FinishCallBackEvent);
        }

        //如果有目标名字则寻找该目标,进行交互
        if (m_Path.AutoSearchTargetName != "")
        {
            Obj_Character obj = Singleton <ObjManager> .GetInstance().FindObjCharacterInSceneByName(m_Path.AutoSearchTargetName);

            if (obj && obj.ObjType == Games.GlobeDefine.GameDefine_Globe.OBJ_TYPE.OBJ_NPC)
            {
                Obj_NPC objNpc = obj as Obj_NPC;
                //根据目标NPC的势力确认是对话还是攻击
                Singleton <ObjManager> .GetInstance().MainPlayer.OnSelectTarget(objNpc.gameObject);

                if (Reputation.IsEnemy(objNpc) || Reputation.IsNeutral(objNpc))
                {
                    //如果是地方NPC,则开始攻击
                    Singleton <ObjManager> .GetInstance().MainPlayer.OnEnterCombat(objNpc.GetComponent <Obj_Character>());
                }
                else
                {
                    //如果是友方NPC,则开始对话
                    Singleton <DialogCore> .GetInstance().Show(objNpc);

                    objNpc.FaceTo(Singleton <ObjManager> .GetInstance().MainPlayer.ObjTransform.position);
                }
            }
        }

        m_EndPointCache.Clean();
        m_Path.ResetPath();
        IsAutoSearching = false;
        if (SceneMapLogic.Instance() != null)
        {
            SceneMapLogic.Instance().StopPlayClickEffect();
        }
    }