void Update()
    {
        if (m_CurrCount < m_MaxCount)
        {
            if (Time.time > m_PrevCreatTime + UnityEngine.Random.Range(1.5f, 3.5f))
            {
                m_PrevCreatTime = Time.time;
                //创建怪
                GameObject objClone = RoleMgr.Instance.LoadRole(monsterName, RoleType.Monster);

                objClone.transform.parent   = transform;
                objClone.transform.position = transform.TransformPoint(new Vector3(UnityEngine.Random.Range(-0.5f, 0.5f), 0, UnityEngine.Random.Range(-0.5f, 0.5f)));
                RoleCtrl roleCtrl = objClone.GetComponent <RoleCtrl>();
                roleCtrl.BornPoint = objClone.transform.position;

                RoleInfoMonster roleInfo = new RoleInfoMonster();
                roleInfo.RoelServerID = DateTime.Now.Ticks;
                roleInfo.RoleID       = 1;
                roleInfo.CurrHP       = roleInfo.MaxHP = 1000;
                roleInfo.NickName     = "偷书盗贼";

                roleCtrl.Init(RoleType.Monster, roleInfo, new RoleMonsterAI(roleCtrl));

                roleCtrl.OnRoleDie = RoleDie;

                m_CurrCount++;
            }
        }
    }
    /// <summary>
    /// 刷怪
    /// </summary>
    void Update()
    {
        if (m_CurrCount < m_MaxCount)
        {
            if (Time.time > m_CreateTime)
            {
                m_CreateTime = Time.time + UnityEngine.Random.Range(1.5f, 3.5f);
                GameObject moster = RoleMgr.Instance.LoadRole(RoleType.Monster, m_MonsterName);
                moster.transform.parent = transform;
                //在指定区域随机刷处怪物
                moster.transform.position = transform.transform.TransformPoint(new Vector3(UnityEngine.Random.Range(-0.5f, 0.5f), 0, UnityEngine.Random.Range(-0.5f, 0.5f)));
                m_CurrCount++;

                RoleInfoMonster roleInfo = new RoleInfoMonster();
                roleInfo.NickName     = "骑兵";
                roleInfo.RoleServerId = DateTime.Now.Ticks;
                roleInfo.MaxHp        = roleInfo.CurrHp = 1000;
                roleInfo.RoleId       = 1;

                RoleCtrl ctrl = moster.GetComponent <RoleCtrl>();
                ctrl.BornPos = transform;

                ctrl.OnDie = OnMonsterDie;

                RoleMonsterAI ai = new RoleMonsterAI(ctrl);

                ctrl.Init(RoleType.Monster, roleInfo, ai);
            }
        }
    }
Exemple #3
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++;
    }
Exemple #4
0
    private void OnRoleDieCallBack(RoleCtrl ctrl)
    {
        //GameLevelCtrl.Instance.CurPassTime = (int)m_FightingTime;
        //UIViewMgr.Instance.OpenView(UIViewType.GameLevelVictory);
        m_KillRegionMonsterCount++;
        RoleInfoMonster info = (RoleInfoMonster)ctrl.CurRoleInfo;

        if (info != null)
        {
            GameLevelMonsterEntity monsterEntity = GameLevelMonsterDBModel.Instance.GetRegionMonsterInfo(m_GameLevelId, m_Grade, m_CurRegionCtrl.RegionId, info.SpriteEntity.Id);
            if (monsterEntity != null)
            {
                if (monsterEntity.Exp > 0)
                {
                    UITipView.Instance.SetUI(0, monsterEntity.Exp.ToString());
                    GameLevelCtrl.Instance.CurGameLevelTotalExp += monsterEntity.Exp;
                }
                if (monsterEntity.Gold > 0)
                {
                    UITipView.Instance.SetUI(1, monsterEntity.Gold.ToString());
                    GameLevelCtrl.Instance.CurGameLevelTotalGold += monsterEntity.Gold;
                }
                if (GameLevelCtrl.Instance.CurGameLevelKillMonsterDic.ContainsKey(monsterEntity.SpriteId))
                {
                    GameLevelCtrl.Instance.CurGameLevelKillMonsterDic[monsterEntity.SpriteId] += 1;
                }
                else
                {
                    GameLevelCtrl.Instance.CurGameLevelKillMonsterDic[monsterEntity.SpriteId] = 1;
                }
            }
        }
        if (m_KillRegionMonsterCount >= m_CurrentRegionMonsterCount)
        {
            m_CurSelectRegionIndex++;
            if (LastRegion)
            {
                //胜利
                m_IsFighting = false;
                GameLevelCtrl.Instance.CurPassTime = (int)m_FightingTime;
                TimeMgr.Instance.SetTimeScaleDuration(0.3f, 3);
                StartCoroutine("FightingWinIE");
                return;
            }
            EnterRegion(m_CurSelectRegionIndex);
        }
    }
    /// <summary> 刷怪 </summary>
    private void CreateMonster()
    {
        //临时测试
        //if (m_CurrRegionCreateMonsterCount>=1) return;

        if (m_RegionMonsterList.Count == 0)
        {
            return;
        }
        for (int i = 0; i < 1; i++)
        {
            m_Index = UnityEngine.Random.Range(0, m_RegionMonsterCountList.Count);
            if (m_RegionMonsterCountList[m_Index] == 0)
            {
                i--;
            }
        }
        int             monsterId     = m_RegionMonsterList[m_Index].MonsterId;
        RoleInfoMonster monsterInfo   = new RoleInfoMonster();
        MonsterEntity   monsterEntity = MonsterDBModel.Instance.Get(monsterId);

        monsterInfo.MonsterEntity          = monsterEntity;
        monsterInfo.GameLevelMonsterEntity = GameLevelMonsterDBModel.Instance.GetGameLevelMonsterEntity(GameLevelCtrl.Instance.ChapterId, GameLevelCtrl.Instance.GameLevelId, m_CurrRegionIndex + 1, monsterId);
        monsterInfo.RoleId = ++m_MonsterTempId;
        m_KillMonsterIdList.Add(monsterInfo.RoleId);
        monsterInfo.SetMonsterData(monsterEntity);
        //从池子中取怪
        Transform monsterTrans = m_MonsterPool.Spawn(MonsterDBModel.Instance.Get(monsterId).PrefabName);
        //将怪放在出生点
        Transform monsterBornPos = m_CurrRegionctrl.MonsterBornPos[UnityEngine.Random.Range(0, m_CurrRegionctrl.MonsterBornPos.Length)];
        RoleCtrl  monsterCtrl    = monsterTrans.GetComponent <RoleCtrl>();

        monsterCtrl.PatrolRadius = monsterEntity.PatrolRadius;
        monsterCtrl.ViewRadius   = monsterEntity.ViewRadius;
        monsterCtrl.Speed        = monsterEntity.MoveSpeed;
        monsterCtrl.Init(RoleType.Monster, monsterInfo, new GameLevelRoleMonsterAI(monsterCtrl, monsterInfo));
        monsterCtrl.OnRoleDie     = OnRoleDieCallBack;
        monsterCtrl.OnRoleDestroy = OnRoleDestroyCallBack;
        monsterCtrl.SetBornPoint(monsterBornPos.TransformPoint(UnityEngine.Random.Range(-0.5f, 0.5f), 0, UnityEngine.Random.Range(-0.5f, 0.5f)));
        m_RegionMonsterCountList[m_Index]--;
        m_CurrRegionCreateMonsterCount++;
    }
Exemple #6
0
 public GameLevelRoleMonsterAI(RoleCtrl roleCtrl, RoleInfoMonster info)
 {
     CurrRole = roleCtrl;
     //m_Info = CurrRole.CurrRoleInfo as RoleInfoMonster;
     m_Info = info;
 }
Exemple #7
0
 public GameLevel_RoleMonsterAI(RoleCtrl roleCtrl, RoleInfoMonster info)
 {
     CurRoleCtrl = roleCtrl;
     RoleInfo    = info;
 }