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); } } }
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++; }
/// <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++; }
/// <summary> /// 加载其他玩家 /// </summary> /// <param name="roleId">角色编号</param> /// <param name="nickName">昵称</param> /// <param name="roleLevel">等级</param> /// <param name="jobId">职业编号</param> /// <param name="maxHP"></param> /// <param name="currHP"></param> /// <param name="maxMP"></param> /// <param name="currMP"></param> /// <returns></returns> public RoleCtrl LoadOtherRole(int roleId, string nickName, int roleLevel, int jobId, int maxHP, int currHP, int maxMP, int currMP) { GameObject roleObj = Object.Instantiate(GlobalInit.Instance.JobObjectDic[jobId]); RoleCtrl roleCtrl = roleObj.GetComponent <RoleCtrl>(); //角色初始化的时候 要赋值基本信息 //以后 包括 帮会信息 称号信息 等 也都要进行同步 RoleInfoMainPlayer roleInfo = new RoleInfoMainPlayer(); roleInfo.RoldId = roleId; roleInfo.RoleNickName = nickName; roleInfo.Level = roleLevel; roleInfo.JobId = (byte)roleId; roleInfo.MaxHP = maxHP; roleInfo.CurrHP = currHP; roleInfo.MaxMP = maxMP; roleInfo.CurrMP = currMP; roleCtrl.Init(RoleType.OTherRole, roleInfo, new OtherRoleAI(roleCtrl)); return(roleCtrl); }