Пример #1
0
    /// <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++;
    }