/// <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); }
/// <summary> /// 改变主角默认时装 /// </summary> /// <param name="weaponName"></param> void ChangeDefulsFashion() { TraceUtil.Log("切换时装:默认时装"); //yield return null; RoleGenerate.GenerateRole(m_hero, playerGenerateConfigData.DefaultAvatar); SetCildLayer(m_hero.transform, 25); }
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 = 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); }
/// <summary> /// 改变主角时装 /// </summary> /// <param name="weaponName"></param> void ChangeFashion(int fashionID) { var FashionData = ItemDataManager.Instance.GetItemData(fashionID); TraceUtil.Log("切换时装:" + FashionData._ModelId); //yield return null; RoleGenerate.GenerateRole(m_hero, FashionData._ModelId); }
/// <summary> /// 改变主角时装 /// </summary> /// <param name="weaponName"></param> public IEnumerator ChangeFashion(int fashionID) { var FashionData = ItemDataManager.Instance.GetItemData(fashionID); TraceUtil.Log("切换时装:" + FashionData._ModelId); yield return(null); RoleGenerate.GenerateRole(m_hero, FashionData._ModelId); SetCildLayer(m_hero.transform, 25); }
/// <summary> /// 改变主角服装 /// </summary> /// <param name="avatarName"></param> public void ChangeAvatar(string avatarName) { if (this.m_heroGo) { RoleGenerate.GenerateRole(this.m_heroGo, avatarName); } else { TraceUtil.Log(SystemModel.Common, TraceLevel.Error, "主角对象不存在"); } }
/// <summary> /// 改变主角默认时装 /// </summary> /// <param name="weaponName"></param> IEnumerator ChangeDefulsFashion() { TraceUtil.Log("切换时装:默认时装"); yield return(null); RoleGenerate.GenerateRole(m_hero, playerGenerateConfigData.DefaultAvatar); SetCildLayer(m_hero.transform, 25); if (MyPanelType == PanelType.FashionInfoPanel) { PlayerChangeFashionAnim(); } }
private void MakeRole(string roleName, string avatarName, string defaultAnim, params string[] anims) { Object.DestroyImmediate(root); root = null; root = RoleGenerate.GenerateRole(roleName, avatarName); root.transform.Rotate(0, 180, 0); RoleGenerate.AttachAnimation(root, roleName, defaultAnim, anims); RoleGenerate.AttachWeapon(root, AttachPoint.RHWeapon, WeaponPrefab, null); root.animation.wrapMode = WrapMode.Loop; }
/// <summary> /// 改变主角时装 /// </summary> /// <param name="weaponName"></param> public void ChangeFashion(object obj) { int fashionID = (int)obj; var FashionData = ItemDataManager.Instance.GetItemData(fashionID); TraceUtil.Log("切换时装:" + FashionData._ModelId); //yield return null; RoleGenerate.GenerateRole(m_hero, FashionData._ModelId); SetCildLayer(m_hero.transform, 25); if (MyPanelType == PanelType.FashionInfoPanel) { PlayerChangeFashionAnim(); } }
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 CreatRoleMode(PvpRoleInfo Char, int VocationID, Transform point) { var pvpConfigData = PlayerDataManager.Instance.GetPVPItemData(VocationID); Char.pvpConfigData = pvpConfigData; Char.playerGenerateConfigData = PlayerDataManager.Instance.GetUIItemData((byte)VocationID); if (Char.playerGenerateConfigData.PlayerId == 1) { if (Char.RoleMode_Char01 == null) { Char.RoleMode_Char01 = RoleGenerate.GenerateRole(Char.playerGenerateConfigData.PlayerName, Char.playerGenerateConfigData.DefaultAvatar, true); Char.RoleMode_Char01.transform.parent = point; Char.RoleMode_Char01.transform.localPosition = Vector3.zero; Char.RoleMode_Char01.transform.localEulerAngles = new Vector3(0, 180, 0); RoleGenerate.AttachAnimation(Char.RoleMode_Char01, pvpConfigData.PlayerName, pvpConfigData.DefaultAnim, pvpConfigData.Animations); Char.RoleControl = Char.RoleMode_Char01.AddComponent <PvpRoleControl>(); } else { Char.RoleMode_Char01.SetActive(true); Char.RoleControl = Char.RoleMode_Char01.GetComponent <PvpRoleControl>(); } Char.currentRoleMode = Char.RoleMode_Char01; } else { if (Char.RoleMode_Char04 == null) { Char.RoleMode_Char04 = RoleGenerate.GenerateRole(Char.playerGenerateConfigData.PlayerName, Char.playerGenerateConfigData.DefaultAvatar, true); Char.RoleMode_Char04.transform.parent = point; Char.RoleMode_Char04.transform.localPosition = Vector3.zero; Char.RoleMode_Char04.transform.localEulerAngles = new Vector3(0, 180, 0); RoleGenerate.AttachAnimation(Char.RoleMode_Char04, pvpConfigData.PlayerName, pvpConfigData.DefaultAnim, pvpConfigData.Animations); Char.RoleControl = Char.RoleMode_Char04.AddComponent <PvpRoleControl>(); } else { Char.RoleMode_Char04.SetActive(true); Char.RoleControl = Char.RoleMode_Char04.GetComponent <PvpRoleControl>(); } Char.currentRoleMode = Char.RoleMode_Char04; } }
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 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") }); */ }
void OnGUI() { GUILayout.Label("--- Target PlayerModel ---"); GameObject newModel = (GameObject)EditorGUILayout.ObjectField("PlayerModel", playerModel, typeof(GameObject), true); if (newModel != playerModel) { #region a var modelClone = Object.Instantiate(newModel) as GameObject; bool hasWeaponAttachment = modelClone.transform.RecursiveObjectExist(ConstDefineManager.LBWeaponPos) || modelClone.transform.RecursiveObjectExist(ConstDefineManager.RBWeaponPos) || modelClone.transform.RecursiveObjectExist(ConstDefineManager.LHWeaponPos) || modelClone.transform.RecursiveObjectExist(ConstDefineManager.RHWeaponPos); if (!hasWeaponAttachment) { if (EditorUtility.DisplayDialog("提示!", "模型没有武器挂载点", "ok", "cancel")) { playerModel = newModel; } } else { playerModel = newModel; } Object.DestroyImmediate(modelClone); #endregion } EditorGUILayout.Separator(); if (GUILayout.Button("0-测试AssetBundle")) { _database = SkinMeshRenderHolder.CreateInstance <SkinMeshRenderHolder>(); _database.name = "First"; SetData(); } if (GUILayout.Button("1-创建材质")) { if (newModel != null) { if (JianghuPlayerAssetManager_V2.GenerateMaterials(playerModel, out errorInfo)) { EditorUtility.DisplayDialog("Character Generator", "创建材质成功", "ok", "cancel"); } else { EditorUtility.DisplayDialog("Character Generator", "创建材质失败", "ok", "cancel"); } } else { } } if (GUILayout.Button("2-分解动画")) { if (newModel != null) { if (JianghuPlayerAssetManager_V2.SplitAnimations(playerModel, out errorInfo)) { EditorUtility.DisplayDialog("Character Generator", "分解动画成功", "ok", "cancel"); } else { EditorUtility.DisplayDialog("Character Generator", "分解动画失败", "ok", "cancel"); } } else { } } if (GUILayout.Button("3-生成角色基础预设件")) { if (newModel != null) { if (JianghuPlayerAssetManager_V2.GenerateRoleBaseAsset(playerModel, out errorInfo)) { EditorUtility.DisplayDialog("Character Generator", "生成角色基础预设件成功", "ok", "cancel"); } else { EditorUtility.DisplayDialog("Character Generator", "生成角色基础预设件失败", "ok", "cancel"); } } else { } } //生成蒙皮物件 if (GUILayout.Button("4-生成蒙皮物件")) { if (newModel != null) { if (JianghuPlayerAssetManager_V2.GenerateRoleSkinAsset(playerModel, out errorInfo)) { EditorUtility.DisplayDialog("Character Generator", "生成蒙皮物件成功", "ok", "cancel"); } else { EditorUtility.DisplayDialog("Character Generator", "生成蒙皮物件失败", "ok", "cancel"); } } else { } } EditorGUILayout.Separator(); EditorGUILayout.Separator(); //生成一个角色 if (GUILayout.Button("生成一个角色")) { RoleGenerate.GenerateRole("char01", "Char01_001", false, MESHDENSITY.HIGHT); } if (GUILayout.Button("生成一个角色(低模)")) { RoleGenerate.GenerateRole("Char01", "Char01_001", false, MESHDENSITY.LOW); } GUILayout.BeginHorizontal(); GUILayout.EndHorizontal(); GUILayout.Label(errorInfo); }