public void CreateMiddle() { RoleEquipmentData equipmentData = new RoleEquipmentData(); equipmentData.RolePlastomerId = "88888888"; equipmentData.RoleEquipmentItems = new List <RoleEquipmentItem> (); equipmentData.RoleEquipmentItems.Add(new RoleEquipmentItem { EquipmentId = 300007, EquipmentType = RoleEquipmentType.RoleHair }); //7 equipmentData.RoleEquipmentItems.Add(new RoleEquipmentItem { EquipmentId = 400008, EquipmentType = RoleEquipmentType.RoleClothe }); //8 equipmentData.RoleEquipmentItems.Add(new RoleEquipmentItem { EquipmentId = 500009, EquipmentType = RoleEquipmentType.RoleFace }); //9 equipmentData.RoleEquipmentItems.Add(new RoleEquipmentItem { EquipmentId = 200005, EquipmentType = RoleEquipmentType.RoleGlasses }); //5 equipmentData.RoleEquipmentItems.Add(new RoleEquipmentItem { EquipmentId = 600009, EquipmentType = RoleEquipmentType.RoleHand }); //11 equipmentData.RoleEquipmentItems.Add(new RoleEquipmentItem { EquipmentId = 100005, EquipmentType = RoleEquipmentType.RoleHat }); //5 AvatarCreateQueue.Instance.CreateAvatar(equipmentData, SpineAvatarType.Middle, "jump_lv1_01", true, true, (Avatar a) => { middle = a as SpineAvatar; GameObject role = middle.avatarObject as GameObject; role.transform.position = new Vector3(2.5f, -2f, 0); role.transform.localScale = Vector3.one; LogManager.Log("角色gameobject完成。"); }, (bool b) => { LogManager.Log("穿戴所有装备完成。"); }, null); }
public void StartFollow(GameObject role, SpineAvatar follow) { followAvatar = follow; roleBoneFollower = role.GetComponent <BoneFollower>(); followTrans = ((followAvatar.avatarObject) as GameObject).transform; roleTrans = role.transform; isStart = true; }
//跟随骨骼移动 public void FollowBoneMove(SpineAvatar otherSpine, string boneName) { GameObject selfFollowGameObject = new GameObject(avatarObject.name); avatarFollow = selfFollowGameObject.AddComponent <AvatarFollow> (); BoneFollower boneFollower = selfFollowGameObject.AddComponent <BoneFollower> (); boneFollower.SkeletonRenderer = GetSkeletonAnimation; boneFollower.SetBone(boneName); avatarFollow.StartFollow(selfFollowGameObject, otherSpine); }
/// <summary> /// 通过skeletonDataAsset创建角色 /// </summary> /// <returns><c>true</c>, if spine role was created, <c>false</c> otherwise.</returns> /// <param name="skeletonDataAsset">Skeleton data asset.</param> /// <param name="animationName">Animation name.</param> /// <param name="skinName">Skin name.</param> /// <param name="pos">Position.</param> private System.Collections.IEnumerator Create(SpineAvatarType avatarType, EquipmentObject eo, SkeletonDataAsset skeletonDataAsset, string roleGameObjectName, string animationName, string skinName, bool loop, RoleEquipmentData data, Action <Avatar> createSucCallBack, Action <string> failCallBack, Action <bool> createQueueCallBack, bool isTP) { if (skeletonDataAsset == null) { if (failCallBack != null) { failCallBack.Invoke("<-创建角色失败->"); } yield break; } GameObject roleSpine = new GameObject { name = roleGameObjectName }; roleObject = roleSpine; skeletonAnimation = SkeletonAnimation.AddToGameObject(roleSpine, skeletonDataAsset); skeletonAnimation.Initialize(false); skeletonAnimation.Skeleton.SetSkin(skinName); skeletonAnimation.state.SetAnimation(SpineConstValue.TrackIndex, animationName, loop); CreateSlotAttachmentDic(skeletonAnimation.Skeleton.Data.DefaultSkin.Attachments); if (null == data) { equipmentData = new RoleEquipmentData(); equipmentData.RoleEquipmentItems = new List <RoleEquipmentItem> (); } else { equipmentData = data; } CombineTextureData combineTextureData = new CombineTextureData(); combineTextureData.resultData = new CombineFinishedData(); RoleAnaimationData rad = new RoleAnaimationData { roleJsonStr = eo.equipmentJsonAsset.text }; Avatar avatar = new SpineAvatar(equipmentData, skeletonAnimation, slotAttachmentDic, rad, combineTextureData, avatarType, roleObject, eo.equipmentJsonAsset.text); combineTextureData.resultData.self = avatar; if (createSucCallBack != null) { if (null != roleSpine) { roleSpine.SetActive(false); createSucCallBack.Invoke(avatar); } } //初始化角色的所有服装信息 if (equipmentData.RoleEquipmentItems.Count > 0) { if (null != combineTextureData.initRoleCoroutine) { GameManager.Instance.StopCoroutine(combineTextureData.initRoleCoroutine); } combineTextureData.initRoleCoroutine = GameManager.Instance.StartCoroutine(InitRoleEquipment(rad, skeletonAnimation, equipmentData, combineTextureData, slotAttachmentDic, avatar.GetDestoryTextureList, roleSpine.SetActive, null, isTP)); yield return(combineTextureData.initRoleCoroutine); } else { roleSpine.SetActive(true); } if (null != createQueueCallBack) { createQueueCallBack.Invoke(true); } }