/// <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++; }