//加载玩家 private void LoadPlayer(MapCfg mapData) { GameObject player = resSvc.LoadPrefab(PathDefine.AssassinBattlePlayerPrefab); player.transform.position = mapData.playerBornPos; player.transform.localEulerAngles = mapData.playerBornRote; player.transform.localScale = Vector3.one; PlayerController playerCtrl = player.GetComponent <PlayerController>(); playerCtrl.Init(); PlayerData pd = GameRoot.instance.playerData; BattleProps props = new BattleProps() { hp = pd.hp, ad = pd.ad, ap = pd.ap, addef = pd.addef, apdef = pd.apdef, dodge = pd.dodge, pierce = pd.pierce, critical = pd.critical, }; //生成角色赋予 状态管理器 entityPlayer = new EntityPlayer(); entityPlayer.SetBattleProps(props); entityPlayer.SetBattleMgr(this); //添加战斗管理器 entityPlayer.SetStateMgr(this.stateMgr); //添加状态管理器 entityPlayer.SetSkillMgr(this.skillMgr); //添加技能管理器 entityPlayer.SetController(playerCtrl); //添加角色控制器 entityPlayer.Idle(); }
private void LoadPlayer(MapCfg mapCfg) { GameObject objPlayer = resSvc.LoadPrefab(PathDefine.cPlayerBattlePrefab); objPlayer.transform.localPosition = mapCfg.playerBornPos; objPlayer.transform.localEulerAngles = mapCfg.playerBornRote; objPlayer.transform.localScale = Vector3.one; PlayerData playerData = GameRoot.Instance.PlayerData; BattleProps battleProps = new BattleProps { hp = playerData.hp, ad = playerData.ad, ap = playerData.ap, addef = playerData.addef, apdef = playerData.apdef, dodge = playerData.dodge, pierce = playerData.pierce, critical = playerData.critical }; entityPlayer = new EntityPlayer { _stateMgr = battleStateMgr, _skillMgr = skillMgr, _battleMgr = this }; entityPlayer.SetBattleProps(battleProps); entityPlayer.EntityName = "Player"; PlayerController playerContrl = objPlayer.GetComponent <PlayerController>(); playerContrl.Init(); entityPlayer.SetController(playerContrl); }
private void LoadPlayer(MapCfg mapData) { GameObject player = resSvc.LoadPrefab(PathDefine.AssissnBattlePlayerPrefab); player.transform.position = mapData.playerBornPos; player.transform.localEulerAngles = mapData.playerBornRote; player.transform.localScale = Vector3.one; PlayerData pd = GameRoot.Instance.PlayerData; BattleProps props = new BattleProps { hp = pd.hp, ad = pd.ad, ap = pd.ap, addef = pd.addef, apdef = pd.apdef, dodge = pd.dodge, pierce = pd.pierce, critical = pd.critical }; entitySelfPlayer = new EntityPlayer { battleMgr = this, stateMgr = stateMgr, skillMgr = skillMgr }; entitySelfPlayer.Name = "AssassinBattle"; entitySelfPlayer.SetBattleProps(props); PlayerController playerCtrl = player.GetComponent <PlayerController>(); playerCtrl.Init(); entitySelfPlayer.SetCtrl(playerCtrl); }
private void LoadPlayer(MapCfg mapCfg) { GameObject player = resSvc.LoadPrefab(PathDefine.AssassinBattlePrefab, false); player.transform.position = mapCfg.playerBornPos; player.transform.localEulerAngles = mapCfg.playerBornRote; player.transform.localScale = Vector3.one; playerController = player.GetComponent <PlayerController>(); playerController.Init(); PlayerData playerData = GameRoot.Instance.PlayerData; BattleProps battleProps = new BattleProps { hp = playerData.hp, ad = playerData.ad, ap = playerData.ap, addef = playerData.addef, apdef = playerData.apdef, dodge = playerData.dodge, pierce = playerData.pierce, critical = playerData.critical, }; entityPlayer = new EntityPlayer { currentAniState = AniState.Idle, stateMgr = this.stateMgr, skillMgr = this.skillMgr, battleMgr = this, Name = "AssassinBattle", }; entityPlayer.SetController(playerController); entityPlayer.SetBattleProps(battleProps); }
private void LoadPlayer(MapConfig mapData) { GameObject player = resSvc.LoadPrefab(PathDefine.ArcherBattle); player.transform.position = mapData.playerBornPos; player.transform.eulerAngles = mapData.playerBornRote; player.transform.localScale = Vector3.one; PlayerData pd = GameRoot.instance.Playerdata; BattleProps props = new BattleProps { hp = pd.hp, attackValue = pd.attackValue, defend = pd.defend, critical = pd.critical, }; /*载入角色以后,把状态管理器、角色控制器注入到逻辑实体里面,通过逻辑实体的状态管理管理状态,然后在状态管理器里面 * 又通过逻辑实体里面持有的角色控制器来控制表现*/ entitySelfPlayer = new EntityPlayer { battleMg = this, stateMg = this.stateMg, skillMg = skillMg, }; entitySelfPlayer.SetBattleProps(props); entitySelfPlayer.Name = player.name; PlayerController playerController = player.GetComponent <PlayerController>(); playerController.Init(); entitySelfPlayer.SetController(playerController); playerAudioSource = entitySelfPlayer.GetAudio(); if (GameRoot.instance.isNewBow) { playerController.GetComponent <ChangeSkinSys>().ChangeWeaponSkinToNew(); } else { playerController.GetComponent <ChangeSkinSys>().ChangeWeaponSkinToOld(); } }
public void LoadPlayer(MapCfgs mapData) { GameObject player = resSvc.LoadPrefab(PathDefine.ASsissnBattlePlayerPrefab); player.transform.position = mapData.playerBornPos; player.transform.localEulerAngles = mapData.playerBornRote; player.transform.localScale = Vector3.one; //实例化一个逻辑实体 entityPlayer = new EntityPlayer(); //注入状态管理器 entityPlayer.stateMgr = stateMgr; //初始化角色控制器 PlayerController playerCtrl = player.GetComponent <PlayerController>(); playerCtrl.Init(); entityPlayer.controller = playerCtrl; }
private void LoadPlayer(MapCfg mapData) { GameObject player = resSvc.LoadPrefab(PathDefine.AssissnBattlePlayerPrefab); player.transform.position = mapData.playerBornPos; player.transform.localEulerAngles = mapData.playerBornRote; player.transform.localScale = Vector3.one; entitySelfPlayer = new EntityPlayer { battleMgr = this, stateMgr = stateMgr, skillMgr = skillMgr }; PlayerController playerCtrl = player.GetComponent <PlayerController>(); playerCtrl.Init(); entitySelfPlayer.controller = playerCtrl; }
/// <summary> /// 可以优化代码结构。 /// </summary> /// <param name="battlePropDic"></param> public void Init(Dictionary <int, BattleProp> battlePropDic) { resSvc = ResSvc.Instance; timerSvc = TimerSvc.Instance; //初始化各管理器 stateMgr = gameObject.AddComponent <StateMgr>(); stateMgr.Init(); bulletParent = GameObject.Find("Temp/Bullets").transform; effectParent = GameObject.Find("Temp/Effects").transform; bulletPool = gameObject.AddComponent <ObjectPool>(); laserBulletPool = gameObject.AddComponent <ObjectPool>(); hitEffectPool = gameObject.AddComponent <ObjectPool>(); fireEffectPool = gameObject.AddComponent <ObjectPool>(); shellEffectPool = gameObject.AddComponent <ObjectPool>(); //找到自己的战场参数 foreach (var item in battlePropDic) { RoleType roleType = (RoleType)item.Key; ControllerBase controllerBase = null; GameObject playerGO = null; if (roleType == BattleSys.Instance.GetCurrentRoleType()) { playerGO = resSvc.LoadPrefab(PathDefine.PlayerPath); #region 设置摄像机以及添加玩家控制器 switch (roleType) { case RoleType.Red: Camera.main.transform.position = new Vector3(0, 1f, -30f); Camera.main.transform.localEulerAngles = new Vector3(0, 0, 0); break; case RoleType.Blue: Camera.main.transform.position = new Vector3(0, 1f, 30f); Camera.main.transform.localEulerAngles = new Vector3(0, 180, 0); break; case RoleType.Yellow: Camera.main.transform.position = new Vector3(-30, 1, 30f); Camera.main.transform.localEulerAngles = new Vector3(0, 180, 0); break; case RoleType.Green: Camera.main.transform.position = new Vector3(30, 1, 30f); Camera.main.transform.localEulerAngles = new Vector3(0, 180, 0); break; case RoleType.Purple: Camera.main.transform.position = new Vector3(-30, 1, -30f); Camera.main.transform.localEulerAngles = new Vector3(0, 0, 0); break; case RoleType.Black: Camera.main.transform.position = new Vector3(30, 1, -30f); Camera.main.transform.localEulerAngles = new Vector3(0, 0, 0); break; case RoleType.Orange: Camera.main.transform.position = new Vector3(22, 1, -5f); Camera.main.transform.localEulerAngles = new Vector3(0, 0, 0); break; case RoleType.White: Camera.main.transform.position = new Vector3(-25, 1, -5f); Camera.main.transform.localEulerAngles = new Vector3(0, 0, 0); break; } playerController = playerGO.AddComponent <PlayerController>(); #endregion playerController.SetRoleType(roleType); controllerDic.Add(roleType, playerController); #region 设置实体数据 playerEntity = new PlayerEntity(this, stateMgr); playerEntity.SetCtrl(playerController); playerEntity.SetBattleProps(battlePropDic.TryGet(item.Key)); //考虑了扩展游戏到AI playerEntity.SetRoleType(roleType); playerEntity.Born(); #endregion controllerBase = playerController; } else { //设置远程角色 playerGO = resSvc.LoadPrefab(PathDefine.PlayerPath); if (playerGO.GetComponent <CharacterController>() != null) { Destroy(playerGO.GetComponent <CharacterController>()); } RemoteController remoteController = playerGO.AddComponent <RemoteController>(); remoteController.SetRoleType(roleType); controllerDic.Add(roleType, remoteController); #region 设置实体数据 RemoteEntity remoteEntity = new RemoteEntity(this, stateMgr); remoteEntity.SetCtrl(remoteController); remoteEntity.SetBattleProps(battlePropDic.TryGet(item.Key)); //考虑了扩展游戏到AI //remoteEntity.SetRoleType(roleType); remoteEntity.Born(); #endregion controllerBase = remoteController; } switch (roleType) { case RoleType.Red: playerGO.transform.position = new Vector3(0, 0f, -30f);; playerGO.transform.localEulerAngles = new Vector3(0, 0, 0); playerGO.name = "Red"; break; case RoleType.Blue: playerGO.transform.position = new Vector3(0, 0, 30f); playerGO.transform.localEulerAngles = new Vector3(0, 180, 0); playerGO.name = "Blue"; break; case RoleType.Yellow: playerGO.transform.position = new Vector3(-30, 0, 30f); playerGO.transform.localEulerAngles = new Vector3(0, 180, 0); playerGO.name = "Yellow"; break; case RoleType.Green: playerGO.transform.position = new Vector3(30, 0, 30f); playerGO.transform.localEulerAngles = new Vector3(0, 180, 0); playerGO.name = "Green"; break; case RoleType.Purple: playerGO.transform.position = new Vector3(-30, 0, -30f); playerGO.transform.localEulerAngles = new Vector3(0, 0, 0); playerGO.name = "Purple"; break; case RoleType.Black: playerGO.transform.position = new Vector3(30, 0, -30f); playerGO.transform.localEulerAngles = new Vector3(0, 0, 0); playerGO.name = "Black"; break; case RoleType.Orange: playerGO.transform.position = new Vector3(22, 0, -5f); playerGO.transform.localEulerAngles = new Vector3(0, 0, 0); playerGO.name = "Orange"; break; case RoleType.White: playerGO.transform.position = new Vector3(-25, 0, -5f); playerGO.transform.localEulerAngles = new Vector3(0, 0, 0); playerGO.name = "White"; break; } #region 添加枪支 Transform gunTrans = controllerBase.transform.Find(PathDefine.gunTransName).GetComponent <Transform>(); GameObject go = null; switch (battlePropDic.TryGet(item.Key).weapenType) { case WeapenType.Rifle: go = resSvc.LoadPrefab(PathDefine.RiflePrefab); go.name = "Rifle"; go.transform.SetParent(gunTrans); go.transform.localPosition = new Vector3(0, 0, -0.1f); go.transform.localEulerAngles = Vector3.zero; go.transform.localScale = Vector3.one; break; case WeapenType.Sniper: go = resSvc.LoadPrefab(PathDefine.SniperPrefab); go.name = "Sniper"; LineRenderer line = go.AddComponent <LineRenderer>(); line.material = Resources.Load <Material>("ResMaterials/Gun/Lin"); line.startWidth = 0.3f; line.endWidth = 0.3f; line.enabled = false; lineRendererDic.Add(roleType, line); go.transform.SetParent(gunTrans); go.transform.localPosition = new Vector3(0, 0, -0.1f); go.transform.localRotation = Quaternion.Euler(Vector3.zero); go.transform.localScale = new Vector3(0.7f, 0.7f, 0.7f); break; } #endregion } //设置我的武器 playerEntity.SetPlayerWeapen(); PECommon.Log("Init BattleMgr Done."); }