/// <summary> /// 装配角色 /// </summary> /// <param name="playerKind"></param> /// <param name="isHero"></param> /// <returns></returns> private GameObject AssemblyPlayer(PlayerGenerateConfigData configData, byte playerKind, bool isHero, string avatarName) { string defaultAnim, defaultAvatar, defaultWeapon; string[] attachAnims, weaponPosition; defaultAnim = configData.DefaultAnim; attachAnims = configData.Animations; defaultAvatar = string.IsNullOrEmpty(avatarName)? configData.DefaultAvatar:avatarName; defaultWeapon = configData.DefaultWeapon; weaponPosition = configData.WeaponPosition; //如果是客户端主角,使用高模,不是则使用低模 var player = isHero ? RoleGenerate.GenerateRole(configData.PlayerName, defaultAvatar, isHero) : RoleGenerate.GenerateRole(configData.PlayerName, defaultAvatar, isHero, MESHDENSITY.LOW); player.name = configData.PlayerName; RoleGenerate.AttachAnimation(player, configData.PlayerName, defaultAnim, attachAnims); var weapon = Weapons.SingleOrDefault(P => P.name == defaultWeapon); RoleGenerate.AttachWeapon(player, weaponPosition, weapon, null); return(player); }
void AssemblyPlayer(int VocationID) { if (this.m_hero != null) { Destroy(m_hero); } playerGenerateConfigData = PlayerDataManager.Instance.GetUIItemData((byte)VocationID); this.m_hero = RoleGenerate.GenerateRole(playerGenerateConfigData.PlayerName, playerGenerateConfigData.DefaultAvatar, true); this.m_hero.transform.parent = CreatHeroModelTransform; this.m_hero.transform.localEulerAngles = Vector3.zero; this.m_hero.transform.localPosition = Vector3.zero; RoleGenerate.AttachAnimation(this.m_hero, playerGenerateConfigData.PlayerName, playerGenerateConfigData.DefaultAnim, playerGenerateConfigData.Animations); string[] weaponPosition = GetWeaponPosition(); this.m_hero.gameObject.AddComponent <RoleViewClickEvent>(); RoleGenerate.AttachWeapon(this.m_hero, weaponPosition, playerGenerateConfigData.WeaponObj, null); var shadowEff = GameObject.Instantiate(playerGenerateConfigData.ShadowEffect) as GameObject; shadowEff.name = "shadow"; shadowEff.transform.parent = m_hero.transform; shadowEff.transform.localPosition = new Vector3(0, 1, 0); CreatHeroModelTransform.transform.position = MyPanelType == PanelType.FashionInfoPanel ? playerGenerateConfigData.Avatar_CharPos : playerGenerateConfigData.RoleUI_CharPos; CameraObj.transform.position = m_hero.transform.position + (MyPanelType == PanelType.FashionInfoPanel ? playerGenerateConfigData.Avatar_CameraPos : playerGenerateConfigData.RoleUI_CameraPos); CameraTarget.transform.position = m_hero.transform.position + (MyPanelType == PanelType.FashionInfoPanel ? playerGenerateConfigData.Avatar_CameraTargetPos : playerGenerateConfigData.RoleUI_CameraTargetPos); CameraObj.transform.LookAt(CameraTarget); this.m_hero.transform.localPosition = new Vector3(1000, 0, 0); //m_hero.SetActive(false); }
void AssemblyPlayer(NewCharacterConfigData configData) { //特效 if (configData.EffectPrefab != null) { //this.m_effect = GameObjectPool.Instance.AcquireLocal(configData.EffectPrefab, Vector3.zero, Quaternion.identity); } else { //this.m_effect = GameObject.CreatePrimitive(PrimitiveType.Cube); } //英雄 playerGenerateConfigData = LoginDataManager.Instance.GetPlayerGenerateConfigData(configData.VocationID); this.m_hero = RoleGenerate.GenerateRole(playerGenerateConfigData.PlayerName, playerGenerateConfigData.DefaultAvatar, true); this.m_hero.transform.parent = transform; this.m_hero.transform.localPosition = new Vector3(0, 0, 180); this.m_hero.transform.localRotation = Quaternion.Euler(new Vector3(0, 180, 0)); RoleGenerate.AttachAnimation(this.m_hero, playerGenerateConfigData.PlayerName, playerGenerateConfigData.DefaultAnim, playerGenerateConfigData.Animations); //GameObject weapon = GameManager.Instance.PlayerFactory.Weapons.FirstOrDefault(P => P.name == configData.WeaponName); GameObject weapon = configData.Weapon; TraceUtil.Log("weapon:" + weapon); this.ChangeWeapon(weapon, null); //this.m_effect.transform.parent = m_hero.transform; //this.m_effect.transform.localPosition = Vector3.zero; //this.m_effect.transform.localScale = Vector3.one; }
void AssemblyPlayer(int VocationID) { /* * if (this.m_hero != null) * { * Destroy(m_hero); * } * playerGenerateConfigData = PlayerDataManager.Instance.GetUIItemData((byte)VocationID) ; * this.m_hero = RoleGenerate.GenerateRole(playerGenerateConfigData.PlayerName, playerGenerateConfigData.DefaultAvatar, true); * this.m_hero.transform.parent = transform; * //this.m_hero.transform.localPosition = new Vector3(0, -8, 170); * this.m_hero.transform.localRotation = Quaternion.Euler(new Vector3(0,180,0)); * * RoleGenerate.AttachAnimation(this.m_hero, playerGenerateConfigData.PlayerName, playerGenerateConfigData.DefaultAnim, playerGenerateConfigData.Animations); * * string[] weaponPosition = playerGenerateConfigData.Item_WeaponPosition; * //RoleGenerate.AttachWeapon(this.m_hero, weaponPosition, playerGenerateConfigData.WeaponObj); * * ChangeHeroWeapon(null); * * PlayerIdleAnim(); * SetCildLayer(m_hero.transform, 25); */ playerGenerateConfigData = PlayerDataManager.Instance.GetUIItemData((byte)VocationID); this.m_hero = RoleGenerate.GenerateRole(playerGenerateConfigData.PlayerName, playerGenerateConfigData.DefaultAvatar, true); this.m_hero.transform.parent = transform; this.m_hero.transform.localPosition = new Vector3(0, -8, 170); this.m_hero.transform.localRotation = Quaternion.Euler(new Vector3(0, 180, 0)); RoleGenerate.AttachAnimation(this.m_hero, playerGenerateConfigData.PlayerName, playerGenerateConfigData.DefaultAnim, playerGenerateConfigData.Animations); string[] weaponPosition = playerGenerateConfigData.Avatar_WeaponPos; RoleGenerate.AttachWeapon(this.m_hero, weaponPosition, playerGenerateConfigData.WeaponObj, null); //光环 this.m_heroHolo = (GameObject)Instantiate(Eff_HeroHoloPrefab); m_heroHolo.transform.parent = transform; this.m_heroHolo.transform.Rotate(Vector3.left * 20, Space.Self); SetCildLayer(this.m_heroHolo.transform, 25); //ChangeHeroWeapon(null); ////SetCildLayer(m_hero.transform, 25); //TweenFloat.Begin(1,0,1,null,AddRotateComponentForSeconds); ChangeHeroFashion(); ChangeHeroWeapon(null); SetCildLayer(m_hero.transform, 25); SetModelPisitionImmediate(); }
/// <summary> /// 装配角色 /// </summary> private GameObject AssemblyPlayer(PlayerGenerateConfigData configData, Vector3 pos) { string defaultAnim, defaultAvatar; string[] attachAnims;//, weaponPosition; defaultAnim = configData.DefaultAnim; attachAnims = configData.Animations; defaultAvatar = configData.DefaultAvatar; //defaultWeapon = configData.DefaultWeapon; //weaponPosition = configData.WeaponPosition; var player = RoleGenerate.GenerateRole(configData.PlayerName, defaultAvatar, true); player.name = configData.PlayerName; RoleGenerate.AttachAnimation(player, configData.PlayerName, defaultAnim, attachAnims); PlayerBehaviour playerBehaviour = player.GetComponent <PlayerBehaviour>(); if (playerBehaviour != null) { player.RemoveComponent <PlayerBehaviour>("PlayerBehaviour"); } player.transform.position = pos; player.animation.CrossFade("BIdle"); //SetPlayerShadow(player, configData.ShadowEffect); //挂武器 jamfing /*int vocation = PlayerManager.Instance.FindHeroDataModel().PlayerValues.PlayerCommonValue.PLAYER_FIELD_VISIBLE_VOCATION; * StroyLineKey key = new StroyLineKey{ VocationID = vocation,ConditionID = GameManager.Instance.GetStoryConfigData._TriggerCondition, * EctypeID = GameManager.Instance.GetStoryConfigData._EctypeID };*/ if (StroyLineConfigManager.Instance.GetStroyLineConfig.ContainsKey(StroyLineDataManager.Instance.curStroyLineKey)) { if (StroyLineConfigManager.Instance.GetStroyLineConfig[StroyLineDataManager.Instance.curStroyLineKey].WeaponType == 1) { string[] ItemWeaponPosition = configData.WeaponPosition; var weaponObj = PlayerFactory.Instance.GetWeaponPrefab(configData.DefaultWeapon); RoleGenerate.AttachWeapon(player, ItemWeaponPosition, weaponObj, null); } } return(player); }
void AssemblyPlayer(int VocationID, int FashionID, int WeaponID) { playerGenerateConfigData = PlayerDataManager.Instance.GetUIItemData((byte)VocationID); this.m_hero = RoleGenerate.GenerateRole(playerGenerateConfigData.PlayerName, playerGenerateConfigData.DefaultAvatar, true); this.m_hero.transform.parent = transform; this.m_hero.transform.localPosition = new Vector3(0, -8, 170); this.m_hero.transform.localRotation = Quaternion.Euler(new Vector3(0, 180, 0)); RoleGenerate.AttachAnimation(this.m_hero, playerGenerateConfigData.PlayerName, playerGenerateConfigData.DefaultAnim, playerGenerateConfigData.Animations); ChangeHeroWeapon(WeaponID); ChangeHeroFashion(FashionID); //光环 this.m_heroHolo = (GameObject)Instantiate(Eff_HeroHoloPrefab); m_heroHolo.transform.parent = transform; this.m_heroHolo.transform.Rotate(Vector3.left * 20, Space.Self); SetCildLayer(this.m_heroHolo.transform, 25); SetModelPisitionImmediate(); }
void AssemblyPlayer(int VocationID) { if (this.m_hero != null) { Destroy(m_hero); } playerGenerateConfigData = PlayerDataManager.Instance.GetUIItemData((byte)VocationID); this.m_hero = RoleGenerate.GenerateRole(playerGenerateConfigData.PlayerName, playerGenerateConfigData.DefaultAvatar, true); this.m_hero.transform.parent = transform; this.m_hero.transform.localScale = Vector3.one; this.m_hero.transform.localPosition = new Vector3(0, -8f, 21); this.m_hero.transform.localRotation = Quaternion.Euler(new Vector3(0, 180, 0)); RoleGenerate.AttachAnimation(this.m_hero, playerGenerateConfigData.PlayerName, playerGenerateConfigData.DefaultAnim, playerGenerateConfigData.Animations); string[] weaponPosition = playerGenerateConfigData.Avatar_WeaponPos; this.m_hero.gameObject.AddComponent <RoleViewClickEvent>(); RoleGenerate.AttachWeapon(this.m_hero, weaponPosition, playerGenerateConfigData.WeaponObj, null); ////SetCildLayer(m_hero.transform, 25); TweenFloat.Begin(1, 0, 1, null, AddRotateComponentForSeconds); ChangeHeroFashion(); ChangeHeroWeapon(null, false); SetCildLayer(m_hero.transform, 25); }
private static void MakePlayGenerateConfigDataList(string xmlFileName, string sheetName) { string xmlPath = Path.Combine(EW_RESOURCE_PLAYER_GENERATE_CONFIG_FOLDER, xmlFileName + ".xml"); TextReader tr = new StreamReader(xmlPath); string text = tr.ReadToEnd(); tr.Close(); tr.Dispose(); if (string.IsNullOrEmpty(text)) { Debug.LogError("Player generate config file not exist"); return; } else { XmlSpreadSheetReader.ReadSheet(text, sheetName); XmlSpreadSheet sheet = XmlSpreadSheetReader.Output; string[] keys = XmlSpreadSheetReader.Keys; object[] levelIds = sheet[keys[0]]; List <PlayerGenerateConfigData> tempList = new List <PlayerGenerateConfigData>(); for (int i = 1; i < levelIds.Length; i++) { PlayerGenerateConfigData data = new PlayerGenerateConfigData(); data.PlayerId = Convert.ToByte(sheet["PlayerId"][i]); data.PlayerName = Convert.ToString(sheet["PlayerName"][i]); data.DefaultAvatar = Convert.ToString(sheet["DefaultAvatar"][i]); data.DefaultAnim = Convert.ToString(sheet["DefaultAnim"][i]); data.DefaultWeapon = Convert.ToString(sheet["DefaultWeapon"][i]); if (!string.IsNullOrEmpty(data.DefaultWeapon)) { var WeaponPath = Path.Combine(EW_ASSET_PLAYER_WEAPON_FOLDER, data.DefaultWeapon + ".prefab"); data.WeaponObj = AssetDatabase.LoadAssetAtPath(WeaponPath, typeof(GameObject)) as GameObject; } var weaponPositins = Convert.ToString(sheet["WeaponPosition"][i]).Split('+'); if (weaponPositins.Length > 0) { data.WeaponPosition = weaponPositins; } else { data.WeaponPosition = new string[] { Convert.ToString(sheet["WeaponPosition"][i]) }; } var normalSkills = Convert.ToString(sheet["NormalSkillID"][i]).Split('+'); data.NormalSkillID = new int[6]; data.NormalSkillID[0] = Convert.ToInt32(normalSkills[0]); //突击 data.NormalSkillID[1] = Convert.ToInt32(normalSkills[1]); //突击后的攻击 data.NormalSkillID[2] = Convert.ToInt32(normalSkills[2]); //以下是修改前的普攻4段 data.NormalSkillID[3] = Convert.ToInt32(normalSkills[3]); data.NormalSkillID[4] = Convert.ToInt32(normalSkills[4]); data.NormalSkillID[5] = Convert.ToInt32(normalSkills[5]); data.ScrollSkillID = Convert.ToInt32(normalSkills[4]); if (normalSkills.Length >= 9) { data.BUFF_SKILLID = Convert.ToInt32(normalSkills[7]); data.FATAL_SKILLID = Convert.ToInt32(normalSkills[8]); } if (normalSkills.Length >= 10) { data.StandUpSkillID = Convert.ToInt32(normalSkills[9]); } if (normalSkills.Length >= 12) { data.OpeningSkillID_1 = Convert.ToInt32(normalSkills[10]); data.OpeningSkillID_2 = Convert.ToInt32(normalSkills[11]); } string skillEffectName = Convert.ToString(sheet["SkillEffect"][i]); if (skillEffectName == "null") { skillEffectName = null; } if (!string.IsNullOrEmpty(skillEffectName)) { var effectPath = Path.Combine(EW_ASSET_PLAYER_SKILLEFFECT_FOLDER, skillEffectName + ".prefab"); var skillEffectGo = AssetDatabase.LoadAssetAtPath(effectPath, typeof(GameObject)) as GameObject; data.SkillEffect = skillEffectGo; } //阴影Prefabs data.ShadowEffect = AssetDatabase.LoadAssetAtPath(Path.Combine(EW_ASSET_PLAYER_SKILLEFFECT_FOLDER, "JH_Eff_Scenes_011.prefab"), typeof(GameObject)) as GameObject; if (sheetName == "Battle") { var normalBackAttackSkills = Convert.ToString(sheet["BackAttack"][i]).Split('+'); //普通攻击,边退边攻击 data.NormalBackAttackSkillID = new int[6]; data.NormalBackAttackSkillID[0] = Convert.ToInt32(normalBackAttackSkills[0]); //突击 data.NormalBackAttackSkillID[1] = Convert.ToInt32(normalBackAttackSkills[1]); //突击后的攻击 data.NormalBackAttackSkillID[2] = Convert.ToInt32(normalBackAttackSkills[2]); //以下是修改前的普攻4段 data.NormalBackAttackSkillID[3] = Convert.ToInt32(normalBackAttackSkills[3]); data.NormalBackAttackSkillID[4] = Convert.ToInt32(normalBackAttackSkills[4]); data.NormalBackAttackSkillID[5] = Convert.ToInt32(normalBackAttackSkills[5]); string runEffectStr = Convert.ToString(sheet["RunEffect"][i]); data.RunEffect = AssetDatabase.LoadAssetAtPath(Path.Combine("Assets", runEffectStr + ".prefab"), typeof(GameObject)) as GameObject; } var animations = Convert.ToString(sheet["Animations"][i]).Split('+'); if (animations.Length > 0) { data.Animations = animations; } else { data.Animations = new string[] { Convert.ToString(sheet["Animations"][i]) }; } if (sheetName == "UI") { data.ItemAniIdle = Convert.ToString(sheet["Item_Ani_Idle"][i]); data.ItemAniChange = Convert.ToString(sheet["Item_Ani_Change"][i]).Split('|'); data.Item_WeaponPosition = Convert.ToString(sheet["Item_WeaponPosition"][i]).Split('+'); string[] charPosStr = Convert.ToString(sheet["Avatar_CharPos"][i]).Split('+'); data.Avatar_CharPos = new Vector3(float.Parse(charPosStr[1]), float.Parse(charPosStr[2]), float.Parse(charPosStr[3])); data.Avatar_WeaponPos = Convert.ToString(sheet["Avatar_WeaponPos"][i]).Split('+'); data.Avatar_Ani = Convert.ToString(sheet["Avatar_Ani"][i]).Split('|'); // data.RoleUI_ItemToAvatar_Ani=Convert.ToString(sheet["ItemToAvatar_Ani"][i]).Split('|'); // data.RoleUI_AvatarToItem_Ani=Convert.ToString(sheet["AvatarToItem_Ani"][i]).Split('|'); data.Item_InAni = Convert.ToString(sheet["Item_InAni"][i]).Split('|'); string[] Item_InEf = Convert.ToString(sheet["Item_InEff"][i]).Split('|'); List <PackToFashingEff> Item_InEfs = new List <PackToFashingEff>(); foreach (var item in Item_InEf) { PackToFashingEff eff = new PackToFashingEff(); string ItemInEffPath = Path.Combine(EW_ASSET_PLAYER_SKILLEFFECT_FOLDER, item.Split('+')[0] + ".prefab"); eff.Eff = AssetDatabase.LoadAssetAtPath(ItemInEffPath, typeof(GameObject)) as GameObject; eff.StartTime = Convert.ToSingle(item.Split('+')[1]); Item_InEfs.Add(eff); } data.Item_InEff = Item_InEfs.ToArray(); data.Item_OutAni = Convert.ToString(sheet["Item_OutAni"][i]).Split('|'); string[] Item_OutEff = Convert.ToString(sheet["Item_OutEff"][i]).Split('|'); List <PackToFashingEff> Item_OutEffs = new List <PackToFashingEff>(); foreach (var item in Item_OutEff) { PackToFashingEff eff = new PackToFashingEff(); string ItemInEffPath = Path.Combine(EW_ASSET_PLAYER_SKILLEFFECT_FOLDER, item.Split('+')[0] + ".prefab"); eff.Eff = AssetDatabase.LoadAssetAtPath(ItemInEffPath, typeof(GameObject)) as GameObject; eff.StartTime = Convert.ToSingle(item.Split('+')[1]); Item_OutEffs.Add(eff); } data.Item_OutEff = Item_OutEffs.ToArray(); data.Avatar_InAni = Convert.ToString(sheet["Avatar_InAni"][i]).Split('|'); string[] Avatar_InEff = Convert.ToString(sheet["Avatar_InEff"][i]).Split('|'); List <PackToFashingEff> Avatar_InEffs = new List <PackToFashingEff>(); foreach (var item in Avatar_InEff) { PackToFashingEff eff = new PackToFashingEff(); string ItemInEffPath = Path.Combine(EW_ASSET_PLAYER_SKILLEFFECT_FOLDER, item.Split('+')[0] + ".prefab"); eff.Eff = AssetDatabase.LoadAssetAtPath(ItemInEffPath, typeof(GameObject)) as GameObject; eff.StartTime = Convert.ToSingle(item.Split('+')[1]); Avatar_InEffs.Add(eff); } data.Avatar_InEff = Avatar_InEffs.ToArray(); data.Avatar_OutAni = Convert.ToString(sheet["Avatar_OutAni"][i]).Split('|'); string[] Avatar_OutEff = Convert.ToString(sheet["Avatar_OutEff"][i]).Split('|'); List <PackToFashingEff> Avatar_OutEffs = new List <PackToFashingEff>(); foreach (var item in Avatar_OutEff) { PackToFashingEff eff = new PackToFashingEff(); string ItemInEffPath = Path.Combine(EW_ASSET_PLAYER_SKILLEFFECT_FOLDER, item.Split('+')[0] + ".prefab"); eff.Eff = AssetDatabase.LoadAssetAtPath(ItemInEffPath, typeof(GameObject)) as GameObject; eff.StartTime = Convert.ToSingle(item.Split('+')[1]); Avatar_OutEffs.Add(eff); } data.Avatar_OutEff = Avatar_OutEffs.ToArray(); data.Avatar_DefaultAni = Convert.ToString(sheet["Avatar_DefaultAni"][i]).Split('|'); string[] camPosStr = Convert.ToString(sheet["Avatar_CameraPos"][i]).Split('+'); data.Avatar_CameraPos = new Vector3(float.Parse(camPosStr[1]), float.Parse(camPosStr[2]), float.Parse(camPosStr[3])); string[] camTargerPosStr = Convert.ToString(sheet["Avatar_CameraTargetPos"][i]).Split('+'); data.Avatar_CameraTargetPos = new Vector3(float.Parse(camTargerPosStr[1]), float.Parse(camTargerPosStr[2]), float.Parse(camTargerPosStr[3])); string[] roleCharPosStr = Convert.ToString(sheet["RoleUI_CharPos"][i]).Split('+'); data.RoleUI_CharPos = new Vector3(float.Parse(roleCharPosStr[1]), float.Parse(roleCharPosStr[2]), float.Parse(roleCharPosStr[3])); data.RoleUI_WeaponPosition = Convert.ToString(sheet["RoleUI_WeaponPosition"][i]).Split('+'); data.RoleUI_Ani_Idle = Convert.ToString(sheet["RoleUI_Ani_Idle"][i]).Split('|'); string[] roleCamPosStr = Convert.ToString(sheet["RoleUI_CameraPos"][i]).Split('+'); data.RoleUI_CameraPos = new Vector3(float.Parse(roleCamPosStr[1]), float.Parse(roleCamPosStr[2]), float.Parse(roleCamPosStr[3])); string[] camTargetPosStr = Convert.ToString(sheet["RoleUI_CameraTargetPos"][i]).Split('+'); data.RoleUI_CameraTargetPos = new Vector3(float.Parse(camTargetPosStr[1]), float.Parse(camTargetPosStr[2]), float.Parse(camTargetPosStr[3])); data.PVP_Ready = Convert.ToString(sheet["PVP_Ready"][i]).Split('|'); data.PVP_Success = Convert.ToString(sheet["PVP_Success"][i]).Split('|'); data.PVP_Fail = Convert.ToString(sheet["PVP_Fail"][i]).Split('|'); data.HitFlyHeight = Convert.ToSingle(sheet["HitFlyHeight"][i]); data.BeAttackBreakLV = Convert.ToInt32(sheet["BeAttackBreakLV"][i]); data.BeHitFlyBreakLV = Convert.ToInt32(sheet["BeHitFlyBreakLV"][i]); data.Team_WeaponPosition = Convert.ToString(sheet["Team_WeaponPosition"][i]).Split('+'); data.Team_Ani_Idle = Convert.ToString(sheet["Team_Ani_Idle"][i]).Split('+'); data.Team_Ani_Join = Convert.ToString(sheet["Team_Ani_Join"][i]).Split('+'); } tempList.Add(data); } CreatePlayerGenerateConfigDataBase(tempList, xmlFileName + sheetName); } }
private void AssemblyPlayer(string playerName, bool isHero) { Dictionary <string, PlayerGenerateConfigData> m_UIItems = new Dictionary <string, PlayerGenerateConfigData>(); foreach (PlayerGenerateConfigData data in PlayerGenerateConfigData_UI._dataTable) { m_UIItems.Add(data.PlayerName, data); } m_configData = m_UIItems[playerName]; var player = RoleGenerate.GenerateRole(playerName, m_configData.DefaultAvatar, isHero); player.name = playerName; RoleGenerate.AttachAnimation(player, playerName, m_configData.DefaultAnim, m_configData.Animations);// ); player.transform.Rotate(Vector3.up, 180); player.tag = "UIHero"; //player.animation.wrapMode = WrapMode.Loop; this.m_heroGo = player; this.ChangeWeapon(m_configData.DefaultWeapon, null); float aniTime = player.animation["Atk01"].length; float singleF = aniTime / 75; var heroBehaviour = player.AddComponent <UIHeroBehaviour>(); //找到heroBehaviour的FSMSystem。然后把处理方法传入SkillBase委托中。 /* * RoleGenerate.AttachSkill(player, "ATK01" * , new SkillEvent[] * { * new SkillEvent(){ EventTimeAfterLaunch=0f, Type=SkillEventType.PlayViewEffect, Param=0} * ,new SkillEvent(){ EventTimeAfterLaunch=singleF*20f, Type=SkillEventType.PlayViewEffect, Param=1} * ,new SkillEvent(){ EventTimeAfterLaunch=singleF*33f, Type=SkillEventType.PlayViewEffect, Param=2} * } * , string.Empty * , null * , new GameObject[] * { * (GameObject)Resources.Load("Effects/prefab/JH_Eff_Char01_Atk01") * ,(GameObject)Resources.Load("Effects/prefab/JH_Eff_Char01_Atk02") * ,(GameObject)Resources.Load("Effects/prefab/JH_Eff_Char01_Atk03") * }); * RoleGenerate.AttachSkill(player, "skill05" * , new SkillEvent[]{new SkillEvent(){ EventTimeAfterLaunch=0.3f, Type=SkillEventType.PlayViewEffect, Param=0}} * , string.Empty * , null * , new GameObject[] { (GameObject)Resources.Load("Effects/prefab/JH_Eff_Char01_SkillUse02") }); * RoleGenerate.AttachSkill(player, "SKILL01" * , new SkillEvent[]{new SkillEvent(){ EventTimeAfterLaunch=0.3f, Type=SkillEventType.PlayViewEffect, Param=0}} * , string.Empty * , null * , new GameObject[] { (GameObject)Resources.Load("Effects/prefab/JH_Eff_Char01_SkillUse03") }); * RoleGenerate.AttachSkill(player, "skill06" * , new SkillEvent[]{new SkillEvent(){ EventTimeAfterLaunch=0.3f, Type=SkillEventType.PlayViewEffect, Param=0}} * , string.Empty * , null * , new GameObject[] { (GameObject)Resources.Load("Effects/prefab/JH_Eff_Char01_SkillUse04") }); */ }
private void CreatePlayer(IEntityDataStruct entityDataStruct, EntityModelPartial entityModelPartial) { //if(GameManager.Instance.CurrentState == GameManager.GameState.GAME_STATE_STORYLINE) //{ // return; //} switch (entityModelPartial) { case EntityModelPartial.DataStruct: EntityModel playerDataModel = new EntityModel(); playerDataModel.EntityDataStruct = entityDataStruct; EntityController.Instance.RegisteEntity(entityDataStruct.SMsg_Header.uidEntity, playerDataModel); break; case EntityModelPartial.GameObject: if (null == PlayerManager.Instance.FindPlayerByActorId(((IPlayerDataStruct)entityDataStruct).PlayerActorID)) { return; } //应该按ID或类型读配置加载不同的角色。 bool isHero = entityDataStruct.SMsg_Header.nIsHero == 1; float x = 100, z = -100; byte kind = 0; int fashionId = 0; var playerDataStruct = (IPlayerDataStruct)entityDataStruct; x = playerDataStruct.PlayerX; z = playerDataStruct.PlayerY; kind = (byte)playerDataStruct.GetCommonValue().PLAYER_FIELD_VISIBLE_VOCATION; fashionId = playerDataStruct.GetCommonValue().PLAYER_FIELD_VISIBLE_FASHION; bool inTown = GameManager.Instance.CurrentState == GameManager.GameState.GAME_STATE_TOWN; var configData = inTown ? PlayerDataManager.Instance.GetTownItemData(kind) : PlayerDataManager.Instance.GetBattleItemData(kind); if (configData == null) { TraceUtil.Log("角色类型:" + kind + " 找不到配置信息"); } var fashionItem = ItemDataManager.Instance.GetItemData(fashionId); var player = AssemblyPlayer(configData, kind, isHero, fashionItem == null?null:fashionItem._ModelId); player.layer = isHero?10:18; //Player var heroBehaviour = player.AddComponent <PlayerBehaviour>(); player.AddComponent <PlayerHurtFlash>(); //增加被攻击或者爆气特效脚本 //heroBehaviour.ClickPointEffect = HeroClickPointEffect; 主角点击场面的反馈特效。 var shadowEff = GameObject.Instantiate(configData.ShadowEffect) as GameObject; shadowEff.name = "shadow"; shadowEff.transform.parent = player.transform; shadowEff.transform.localPosition = new Vector3(0, 1, 0); //cache hurt point heroBehaviour.CacheHurtPoint(); heroBehaviour.CacheShadow(); PlayerGenerateConfigData battleConfig = PlayerDataManager.Instance.GetBattleItemData(kind); if (null != battleConfig.RunEffect) { GameObject runEff = GameObject.Instantiate(battleConfig.RunEffect) as GameObject; runEff.name = "run_effect"; runEff.transform.parent = player.transform; runEff.transform.localPosition = Vector3.zero; runEff.transform.localScale = Vector3.one; heroBehaviour.CacheRunEffect(); } var UIConfig = PlayerDataManager.Instance.GetUIItemData(kind); heroBehaviour.HitFlyHeight = UIConfig.HitFlyHeight; heroBehaviour.BeBeAttackBreakLV = UIConfig.BeAttackBreakLV; heroBehaviour.BeHitFlyBreakLV = UIConfig.BeHitFlyBreakLV; heroBehaviour.PlayerKind = kind; var playerPosition = new Vector3(0, 0.1f, 0); playerPosition = playerPosition.GetFromServer(x, z); player.transform.position = playerPosition; Quaternion playerDir = Quaternion.Euler(0, (float)playerDataStruct.GetUnitValue().sMsgPropCreateEntity_SC_UnitVisibleValue.UNIT_FIELD_DIR / 1000.0f, 0); player.transform.rotation = playerDir; TypeID type; heroBehaviour.EntityModel = EntityController.Instance.GetEntityModel(entityDataStruct.SMsg_Header.uidEntity, out type); if (isHero) { player.AddComponent <DontDestroy>(); } else { if (GameManager.Instance.CurrentState == GameManager.GameState.GAME_STATE_BATTLE) { //加入箭头挂载脚本 #if !UNITY_EDITOR ArrowManager.Instance.AddTeammateArrow(player); #endif } } #region 加入称号动画 (去掉) /* * int prestigeLevel = playerDataStruct.GetCommonValue().PLAYER_FIELD_VISIBLE_PRESTIGE_LEVEL; * var prestigeData = PlayerDataManager.Instance.GetPlayerPrestigeList().SingleOrDefault(p => p._pvpLevel == prestigeLevel); * if (prestigeData != null) * { * GameObject medalPrefab = prestigeData._titlePrefab; * if (medalPrefab != null) * { * GameObject medal = (GameObject)Instantiate(medalPrefab); * MedalEffectBehaviour medalBehaviour = medal.AddComponent<MedalEffectBehaviour>(); * medalBehaviour.SetHeroTransform(heroBehaviour.transform); * if (entityDataStruct.SMsg_Header.IsHero) * { * medal.AddComponent<DontDestroy>(); * } * MedalManager.Instance.RegisterMedal(entityDataStruct.SMsg_Header.uidEntity, prestigeLevel, medalBehaviour); * } * } */ #endregion //加入头顶名字 //if (playerDataStruct is SMsgPropCreateEntity_SC_MainPlayer) //{ // CreateTitle(((SMsgPropCreateEntity_SC_MainPlayer)playerDataStruct).Name, isHero, player.transform); //} if (GameManager.Instance.CurrentState != GameManager.GameState.GAME_STATE_PLAYERROOM && playerDataStruct is SMsgPropCreateEntity_SC_OtherPlayer) { var title = CreateTitle(entityDataStruct.SMsg_Header.uidEntity, ((SMsgPropCreateEntity_SC_OtherPlayer)playerDataStruct).Name, isHero, player.transform); heroBehaviour.PlayerTitleRef = title; } //称号 //CreateTitle(entityDataStruct.SMsg_Header.uidEntity,player.transform); PlayerManager.Instance.AttachEntityDataModel(player, entityDataStruct.SMsg_Header.uidEntity); PlayerManager.Instance.AttachEntityDataModel(heroBehaviour, entityDataStruct.SMsg_Header.uidEntity); if (GameManager.Instance.CurrentState == GameManager.GameState.GAME_STATE_BATTLE) { GameManager.Instance.TryFindCameraTarget(); } //根据当前游戏场景,改变玩家的技能,武器挂载等 ////TraceUtil.Log("根据当前游戏场景,改变玩家的技能,武器挂载等在PlayerFactory"); PlayerManager.Instance.PlayerChangeScene(GameManager.Instance.CurrentState, entityDataStruct.SMsg_Header.uidEntity); //PlayerManager.Instance.PlayerCreateProcess(player, heroBehaviour,GameManager.Instance.CurrentState); break; } }
/// <summary> /// 装配机器人玩家 /// </summary> /// <returns>The robot.</returns> /// <param name="configData">Config data.</param> /// <param name="playerKind">Player kind.</param> /// <param name="avatarName">Avatar name.</param> public GameObject AssemblyRobot(PlayerGenerateConfigData configData, byte playerKind, string avatarName) { return(this.AssemblyPlayer(configData, playerKind, false, avatarName)); }