//在平台上创建英雄 public void CreateHero(long roleId, Vector2 screenPos) { HeroInfo info = Global.HeroInfoList.Find(x => x.RoleId == roleId); if (info != null) { HeroEntity heroEntity = HeroDBModel.Instance.Get(info.HeroID); GameObject go = RoleMgr.Instance.LoadRole(RoleType.Hero, heroEntity.PrefabName); RoleCtrl ctrl = go.GetComponent <RoleCtrl>(); ctrl.Init(RoleType.Hero, info, null); HeroPlatform platform = GetHeroPlatformByScreenPos(screenPos); platform.RefreshRoleId(ctrl.CurRoleInfo.RoleId); ctrl.RefreshPlatfrom(platform); ctrl.StandOnPlatfrom(); go.transform.position = platform.transform.TransformPoint(platform.StandPos); bool inFoward = ForwardHeroPlatformList.Contains(platform); if (inFoward) { AddHero(ctrl, true); } else { AddHero(ctrl, false); } ctrl.OnRoleDestory += OnRoleDestoryCallBack; ctrl.OnRoleDie += OnRoleDieCallBack; return; } Debug.Log("错误:在模拟服务器上找不到持有的英雄信息"); }
//创建怪物 private void CreateMonster() { //if (m_CurrentCreateCount > 0) return; List <GameLevelMonsterEntity> gameLevelMonsterEntityList = GameLevelMonsterDBModel.Instance.GetMonsterListByLevelAndGeade(CurLevel, CurGrade); for (int i = 0; i < gameLevelMonsterEntityList.Count; i++) { if (String.IsNullOrEmpty(gameLevelMonsterEntityList[i].SpriteRowAndCol)) { continue; } string[] rowAndColArr = gameLevelMonsterEntityList[i].SpriteRowAndCol.Split('|'); for (int j = 0; j < rowAndColArr.Length; j++) { SpriteEntity spriteEntity = SpriteDBModel.Instance.GetSpriteEntityById(gameLevelMonsterEntityList[i].SpriteId); if (spriteEntity != null) { GameObject go = RoleMgr.Instance.LoadRole(RoleType.Monster, spriteEntity.PrefabName); if (go != null) { RoleCtrl ctrl = go.GetComponent <RoleCtrl>(); if (ctrl != null) { ctrl.OnRoleDie = OnRoleDieCallBack; ctrl.OnRoleDestory = OnRoleDestoryCallBack; MonsterInfo info = new MonsterInfo(spriteEntity); info.RoleId = ++m_TempIndex; info.RoleNickName = spriteEntity.Name; info.Level = spriteEntity.Level; info.MaxHP = spriteEntity.Hp; info.CurrentHP = info.MaxHP; info.PhyAtk = spriteEntity.PhyAtk; info.MgicAtk = spriteEntity.MgicAtk; info.PhyDef = spriteEntity.PhyDef; info.MgicDef = spriteEntity.MgicDef; info.Cri = spriteEntity.Cri; info.CriValue = spriteEntity.CriValue; info.SpriteEntity = spriteEntity; ctrl.AttackRange = spriteEntity.AttackRange; ctrl.MoveStep = spriteEntity.MoveCellCount; //位置赋值 string[] arr = rowAndColArr[j].Split('_'); int row = arr[0].ToInt(); int col = arr[1].ToInt(); Node node = GridManager.Instance.GetNode(row, col); ctrl.transform.position = node.Position; ctrl.Init(RoleType.Monster, info, new MonsterAI(ctrl, info)); BormMonsterCount++; MonsterList.Add(ctrl); } } } } } }
private void CreatePlayer() { string path = string.Format("Player{0}/Player{0}", Global.Instance.UserInfo.CurJob.ToString()); GameObject go = ResourcesMgr.Instance.Load(ResourcesMgr.ResourceType.Role, "Player/" + path); go.transform.position = PlayerBornPos.transform.position; go.transform.rotation = PlayerBornPos.transform.rotation; go.transform.localScale = Vector3.one; m_Player = go.GetComponent <RoleCtrl>(); switch (Global.Instance.UserInfo.CurJob) { default: m_Player.Init(null, 3); break; } m_Player.OnRoleJumpToNextFloor = OnRoleJumpToNextFloor; m_Player.OnRoleDie = OnRoleDead; m_Player.OnRoleHurt = OnRoleHurt; m_Player.OnRoleAddHp = OnRoleAddHp; }
/// <summary> /// 创建地图 角色 怪物 障碍物 终点 /// </summary> private void CreateMap(int level) { //生成障碍物 List <ObstacleInfo> oobstaclePos = GameLevelDBModel.Instance.GetObstaclesInfoList(level); if (oobstaclePos != null) { for (int i = 0; i < oobstaclePos.Count; i++) { GameObject go = ResourcesMrg.Instance.Load(ResourcesMrg.ResourceType.Item, "Obstacle" + oobstaclePos[i].ObstacleType, isCache: true); go.transform.position = oobstaclePos[i].Pos; //将此位置设为障碍物 Node n = GridManager.Instance.GetNodeByPos(oobstaclePos[i].Pos); if (n != null) { n.IsObstacle = true; } } } //生成终点 Vector2 pos = GameLevelDBModel.Instance.GetOverPoint(level); GameObject go1 = ResourcesMrg.Instance.Load(ResourcesMrg.ResourceType.Item, "OverPoint", isCache: true); go1.transform.position = pos; Node n1 = GridManager.Instance.GetNodeByPos(go1.transform.position); if (n1 != null) { n1.IsObstacle = true; } OverPoint = go1; //生成角色 List <RoleInfo> playerInfo = GameLevelDBModel.Instance.GetPlayerInfoList(level); if (playerInfo != null) { for (int i = 0; i < playerInfo.Count; i++) { GameObject go = ResourcesMrg.Instance.Load(ResourcesMrg.ResourceType.Role, "Player", isCache: true); go.transform.position = playerInfo[i].Pos; Player = go.GetComponent <RoleCtrl>(); Player.Init(playerInfo[i].Range, OverPoint); Faction1.AddRole(Player); Player.OnWin += OnRoleWin; } } //生成怪物 List <RoleInfo> monsterInfo = GameLevelDBModel.Instance.GetMonsterInfoList(level); if (monsterInfo != null) { for (int i = 0; i < monsterInfo.Count; i++) { GameObject go = ResourcesMrg.Instance.Load(ResourcesMrg.ResourceType.Role, "Monster", isCache: true); go.transform.position = monsterInfo[i].Pos; RoleCtrl roleCtrl = go.GetComponent <RoleCtrl>(); roleCtrl.Init(monsterInfo[i].Range, Player.gameObject); Faction2.AddRole(roleCtrl); Node n = GridManager.Instance.GetNodeByPos(go.transform.position); if (n != null) { n.IsObstacle = true; } Monsters.Add(roleCtrl); roleCtrl.OnWin += OnRoleWin; } } }