Пример #1
0
    private void CreateMonster()
    {
        //if (m_CurrentCreateCount > 0) return;
        m_Index = UnityEngine.Random.Range(0, m_CurrentRegionMonsterList.Count);
        GameLevelMonsterEntity levelMonsterEntity = m_CurrentRegionMonsterList[m_Index];
        SpriteEntity           spriteEntity       = SpriteDBModel.Instance.Get(levelMonsterEntity.SpriteId);

        if (spriteEntity == null || levelMonsterEntity == null)
        {
            return;
        }
        if (!monsterCreateDic.ContainsKey(m_Index))
        {
            monsterCreateDic[m_Index] = levelMonsterEntity.SpriteCount;
        }
        string prefabName = spriteEntity.PrefabName;

        monsterCreateDic[m_Index]--;
        if (monsterCreateDic[m_Index]-- < 0)
        {
            monsterCreateDic.Remove(m_Index);
        }
        Transform obj = m_Pool.Spawn(prefabName);

        obj.position         = m_CurRegionCtrl.GetMonsterBornPos;
        obj.localEulerAngles = Vector3.zero;
        obj.localScale       = Vector3.one;
        RoleCtrl ctrl = obj.GetComponent <RoleCtrl>();

        ctrl.OnRoleDie     = OnRoleDieCallBack;
        ctrl.OnRoleDestory = OnRoleDestoryCallBack;
        RoleInfoMonster info = new RoleInfoMonster(spriteEntity);

        info.RoleId       = ++m_TempIndex;
        info.RoleNickName = spriteEntity.Name;
        info.Level        = spriteEntity.Level;
        //info.Exp = spriteEntity.RewardExp;
        info.MaxHP     = spriteEntity.HP;
        info.CurrentHP = spriteEntity.HP;
        info.MaxMP     = spriteEntity.MP;
        info.CurrentMP = spriteEntity.MP;
        info.Attack    = spriteEntity.Attack;
        info.Defense   = spriteEntity.Defense;
        info.Hit       = spriteEntity.Hit;
        info.Dodge     = spriteEntity.Dodge;
        info.Res       = spriteEntity.Res;
        info.Cri       = spriteEntity.Cri;
        info.Fighting  = spriteEntity.Fighting * 100;
        ctrl.Init(RoleType.Monster, info, new GameLevel_RoleMonsterAI(ctrl, info));
        ctrl.Born(obj.position);
        ctrl.ViewRange = spriteEntity.Range_View;
        m_CurrentCreateCount++;
    }