Пример #1
0
    public void createAIImplement(int num, int type, string swopPoints, AIAgentInitParams args)
    {
        Debug.Log("createAIImplement");
        if (GameObject.Find(swopPoints) == null)
        {
            Debug.LogError("SwopPoints Not Found!");
            return;
        }
        Transform sp = GameObject.Find(swopPoints).transform;
        Transform swopTrans;

        Debug.Log("createAIImplement");
        for (int i = 0; i < num; i++)
        {
            swopTrans = sp.GetChild(i);
            if (swopTrans == null)
            {
                Debug.LogError("GeneratePlayer出生点错误!");
                return;
            }
            GameObject AI = (GameObject)Instantiate(AIPrefabs[type], swopTrans.position, swopTrans.rotation);
            //非master_client需要对AI进行裁剪或者增添
            if (!is_master_client)
            {
                //尝试禁用掉非master_client的ai组件
                if (AI.GetComponent <WanderAIAgent>() != null)
                {
                    AI.GetComponent <WanderAIAgent>().enabled = false;
                }
                if (AI.GetComponent <NavMeshAgent>() != null)
                {
                    AI.GetComponent <NavMeshAgent>().enabled = false;
                }
            }

            //创建的AI初始化信息
            begin_id++;
            AI.name = "AI" + begin_id;

            AI.GetComponent <NetSyncController>().setSyncID(AI.name);

            AI.GetComponent <AIAgent>().SetInitParams(args);
            AI_List.Add(AI.name, AI);
            AI_Action_List.Add(AI.name, AI.GetComponent <AIActionController>());
            //初始化位置和转向预测数据
            AI_fPosition_List.Add(AI.name, AI.transform.position);
            AI_lPosition_List.Add(AI.name, AI.transform.position);
            AI_fRotation_List.Add(AI.name, AI.transform.eulerAngles);
            AI_lRotation_List.Add(AI.name, AI.transform.eulerAngles);
        }
    }
Пример #2
0
    public void CreateAI(int num, int type, string swopPoints, AIAgentInitParams args)
    {
        if (!GameMgr.instance)//离线状态
        {
            createAIImplement(num, type, swopPoints, args);
            return;
        }

        if (GameMgr.instance.isMasterClient)
        {
            Debug.Log("call CreateAI");
            createAIImplement(num, type, swopPoints, args);
            m_NetSyncController.RPC(this, "createAIImplement", num, type, swopPoints, args);
        }
    }
Пример #3
0
 public abstract void SetInitParams(AIAgentInitParams initParams);
Пример #4
0
 public override void SetInitParams(AIAgentInitParams initParams)
 {
     _initParams = (EmptyAIAgentInitParams)initParams;
 }
Пример #5
0
 public override void SetInitParams(AIAgentInitParams initParams)
 {
     _initParams = (WanderAIAgentInitParams)initParams;
 }
 public override void SetInitParams(AIAgentInitParams initParams)
 {
     _initParams = (TrackingAIAgentInitParams)initParams;
 }
Пример #7
0
 public override void SetInitParams(AIAgentInitParams initParams)
 {
     _initParams = (TurretAIAgentInitParams)initParams;
 }