Exemplo n.º 1
0
    public AttackNpc(int dataId)
    {
        m_AttackNPCBaseData = DataManager.s_AttackNpcDataManager.GetData(dataId);
        if (m_AttackNPCBaseData == null)
        {
            Debug.LogError("AttackNPCData is null: " + dataId);
            return;
        }

        m_SkillList = new List <Skill>();
        for (int i = 0; i < m_AttackNPCBaseData.SkillArray.Length; i++)
        {
            Skill skill = new Skill(m_AttackNPCBaseData.SkillArray[i]);
            m_SkillList.Add(skill);
            if (skill.SkillType == SkillTypes.NormalSkill)
            {
                NormalSkillList.Add(skill.SkillId);
            }
            else if (skill.SkillType == SkillTypes.AttackSkill)
            {
                AttackSkillList.Add(skill.SkillId);
            }
        }

        Hp = MaxHp;
    }
Exemplo n.º 2
0
    /// <summary>
    /// 初始AttackNpc数据;
    /// </summary>
    /// <returns></returns>
    void InitAttackNpc(AttackNpcSpawnData spawnData)
    {
        AttackNpcData attackNpcData = DataManager.s_AttackNpcDataManager.GetData(spawnData.AttackNpcID);

        if (attackNpcData == null)
        {
            return;
        }
        AttackNpc attackNpc = new AttackNpc(spawnData.AttackNpcID);

        if (attackNpc != null)
        {
            m_AttackNpcDic.Add(spawnData.ID, attackNpc);
        }
    }
Exemplo n.º 3
0
    /// <summary>
    /// 创建AttackNpc;
    /// </summary>
    /// <returns></returns>
    public void CreateAttackNpc(AttackNpcSpawnData spawnData)
    {
        if (spawnData == null)
        {
            return;
        }

        AttackNpcData attackNpcData = DataManager.s_AttackNpcDataManager.GetData(spawnData.AttackNpcID);

        if (attackNpcData == null)
        {
            return;
        }

        AttackNpc  attackNpc = m_AttackNpcDic [spawnData.ID];
        Quaternion rotate    = Quaternion.Euler(new Vector3(0, spawnData.Orient * Mathf.Rad2Deg, 0));
        GameObject prefab    = ResourcesManager.Instance.LoadUnitObject(attackNpcData.Model, UNIT_TYPE.ATTACK_NPC);
        GameObject npcobj    = GameObject.Instantiate(prefab) as GameObject;

        npcobj.transform.position = spawnData.Position;
        npcobj.transform.rotation = rotate;

        UnityEngine.AI.NavMeshAgent agent = npcobj.AddComponent <UnityEngine.AI.NavMeshAgent> ();
        agent.speed        = 0;
        agent.acceleration = 0;
        agent.angularSpeed = 0;
        //agent.avoidancePriority =
        agent.height           = attackNpcData.Height;
        agent.radius           = attackNpcData.Radius;
        agent.stoppingDistance = 0.5f;

        CharacterController collider = npcobj.AddComponent <CharacterController> ();

        collider.height = attackNpcData.Height;
        collider.radius = attackNpcData.Radius;
        collider.center = Vector3.up * Mathf.Max(collider.height / 2.0f, collider.radius);
        npcobj.SetLayerRecursively(LayerMask.NameToLayer("AttackNpc"));

        AttackNpcController controller = npcobj.AddComponent <AttackNpcController> ();

        m_AttackNpcControllerDic.Add(spawnData.ID, controller);
        controller.CurCombatUnit = attackNpc;
        controller.PatrolRadius  = spawnData.PatrolRadius;
    }
Exemplo n.º 4
0
    /// <summary>
    /// 加载NPC数据;
    /// </summary>
    public void LoadNpcData()
    {
        m_AttackNPCDataDic = new Dictionary <int, AttackNpcData>();
        string textAsset = ResourcesManager.Instance.LoadConfigXML("AttackNpcData").text;

        XmlDocument xmlDoc = new XmlDocument();

        xmlDoc.LoadXml(textAsset);
        XmlNode equipXN = xmlDoc.SelectSingleNode("AttackNpcDatas");

        XmlNodeList list = equipXN.ChildNodes;

        if (list != null && list.Count > 0)
        {
            foreach (XmlNode node in list)
            {
                XmlElement element = node as XmlElement;
                if (element.Name.Equals("AttackNpcData"))
                {
                    AttackNpcData info = new AttackNpcData();

                    info.ID                 = CommonHelper.Str2Int(element.GetAttribute("ID"));
                    info.Name               = element.GetAttribute("Name");
                    info.Desc               = element.GetAttribute("Desc");
                    info.Model              = element.GetAttribute("Model");
                    info.Speed              = CommonHelper.Str2Float(element.GetAttribute("Speed"));
                    info.Radius             = CommonHelper.Str2Float(element.GetAttribute("Radius"));
                    info.Spring             = CommonHelper.Str2Float(element.GetAttribute("Spring"));
                    info.Height             = CommonHelper.Str2Float(element.GetAttribute("Height"));
                    info.Level              = CommonHelper.Str2Int(element.GetAttribute("Level"));
                    info.MaxHp              = CommonHelper.Str2Int(element.GetAttribute("MaxHp"));
                    info.Damage             = CommonHelper.Str2Int(element.GetAttribute("Damage"));
                    info.NormalAttackCDTime = CommonHelper.Str2Float(element.GetAttribute("NormalAttackCDTime"));
                    info.SkillArray         = CommonHelper.Str2IntArray(element.GetAttribute("SkillArray"));
                    if (!m_AttackNPCDataDic.ContainsKey(info.ID))
                    {
                        m_AttackNPCDataDic.Add(info.ID, info);
                    }
                }
            }
        }
    }