请教一个spine to unity3d spine插件换装的问题

后使用快捷导航没有帐号?
只需一步,快速开始
查看: 388|回复: 1
关于在Unity中使用Spine动画图素错位的问题
TA的其他好贴
马上注册,加入CGJOY,享用更多功能,让你轻松玩转CGJOY。
才可以下载或查看,没有帐号?
我是一个美术,我们的程序员女汉纸遇到了一个问题,求解:当她在Unity中导入了一个我做的动画,想给这个动画做换装,但是图素错位了。
由于现在她不在,我无法那她的电脑截图,就先用Spine模拟示意一下这个问题,详情如下:
1.我做了这样一个小猫骑士持剑的动画,首先需要换装的是这把剑,如图1:
1.jpg (41.91 KB, 下载次数: 3)
21:25 上传
2.这把剑正确的换装效果,应该如图2:
2.jpg (41.84 KB, 下载次数: 3)
21:26 上传
3.在Spine中正确的操作流程应该是,将另一把剑的武器图素拖拽至A处,即Weapon的封套之下,如图3,
& &而不是B处,即封套之上,如图4:
3.jpg (40.51 KB, 下载次数: 3)
21:26 上传
4.jpg (42.83 KB, 下载次数: 3)
21:26 上传
4.然而我们的程序员女汉纸不希望在同一个封套下隐藏其他图素,所以让我提供只含有一套装备图素的动画。
&&所以当前我们使用的这个动画,每个封套下只有一件装备图素。然后由她自己写代码实现换装(在这本部分我就说不清了,不懂)
当程序员在Unity中替换武器装备图素时,出现了与上面图4相同的现象,弄了好久,求解谢谢。
(两把不同的剑的图素尺寸是完全一样的,剑柄的部位在图片中也完全吻合。)
作为美术来提程序问题我觉得描述应该足够详尽了,明天等她来了继续补充细节,比如要安装什么Runtime之类。
切片的空白部分没擦干净又蒙皮了的话 试试在输出的时候把这两国各去掉&&不勾选
(6.22 KB, 下载次数: 3)
17:50 上传
CGJOY大片~预告~驾到!
CGJOY讲师招聘计划
Powered by播放列表加载中...
正在载入...
分享视频:
嵌入代码:
拍下二维码,随时随地看视频
Spine - Unity setup_1080P
上 传 者:
内容介绍:
Spine - Unity setup_1080P
Channel Me 精选
我来说点啥
版权所有 CopyRight
| 京网文[0号 |
| 京公网安备:
互联网药品信息服务资格证:(京)-非经营性- | 广播电视节目制作经营许可证:(京)字第403号
<img src="" width="34" height="34"/>
<img src=""/>
<li data-vid="">
<img src=""/><i data-vid="" class="ckl_plays">
<img width="132" height="99" src=""/>
在线人数:
<li data-vid="">
<img src=""/><i data-vid="" class="ckl_plays">
<img src="///img/blank.png" data-src=""/>
<img src="///img/blank.png" data-src="http://"/>
<li data-vid="" class="cfix">
src="///img/blank.png" data-src=""/>
<i data-vid="" class="ckl_plays">
<li data-vid="" class="cfix">
src="///img/blank.png" data-src=""/><i data-vid="" class="ckl_plays">
没有数据!
{upload_level_name}
粉丝 {fans_count}
{video_count}
{description}本博客为一个屌丝程序猿的学习笔记。希望能给更多同样在进步的屌丝程序猿有所帮助--QQ群: --->>战斗卡牌视频教程发布(网游)
如标题所诉。mesh 分离。可以实现一个 人物 用很多不同形状的武器或者装备什么的。同时 分离可以优化效率。
那这里就有一个 mesh如何合并的问题。unity提供了 mesh合并的接口。
简单示例代码如下:
using UnityE
using System.C
using System.Collections.G
public class CombineMeshes : MonoBehaviour
void Start()
//获取MeshR
MeshRenderer[] meshRenders = GetComponentsInChildren&MeshRenderer&();
Material[] mats = new Material[meshRenders.Length];
for (int i = 0; i & meshRenders.L i++)
mats[i] = meshRenders[i].sharedM
MeshFilter[] meshFilters = GetComponentsInChildren&MeshFilter&();
CombineInstance[] combine = new CombineInstance[meshFilters.Length];
for (int i = 0; i & meshFilters.L i++)
combine[i].mesh = meshFilters[i].sharedM
combine[i].transform = meshFilters[i].transform.localToWorldM
meshFilters[i].gameObject.SetActive(false);
MeshRenderer mr = gameObject.AddComponent&MeshRenderer&();
MeshFilter mf = gameObject.AddComponent&MeshFilter&();
mf.mesh = new Mesh();
bineMeshes(combine, false);
gameObject.SetActive(true);
mr.sharedMaterials =
12345678910111213141516171819202122232425262728293031323334353637383940
using UnityEngine;using System.Collections;using System.Collections.Generic;&public class CombineMeshes : MonoBehaviour{&&&&&void Start()&&&&{&&&&&&&&//获取MeshR&&&&&&&&MeshRenderer[] meshRenders = GetComponentsInChildren&MeshRenderer&();&&&&&&&&&//材质;&&&&&&&&Material[] mats = new Material[meshRenders.Length];&&&&&&&&for (int i = 0; i & meshRenders.Length; i++)&&&&&&&&{&&&&&&&&&&&&mats[i] = meshRenders[i].sharedMaterial;&&&&&&&&}&&&&&&&&&//合并M&&&&&&&&MeshFilter[] meshFilters = GetComponentsInChildren&MeshFilter&();&&&&&&&&&CombineInstance[] combine = new CombineInstance[meshFilters.Length];&&&&&&&&&for (int i = 0; i & meshFilters.Length; i++)&&&&&&&&{&&&&&&&&&&&&combine[i].mesh = meshFilters[i].sharedMesh;&&&&&&&&&&&&combine[i].transform = meshFilters[i].transform.localToWorldMatrix;&&&&&&&&&&&&meshFilters[i].gameObject.SetActive(false);&&&&&&&&}&&&&&&&&&MeshRenderer mr = gameObject.AddComponent&MeshRenderer&();&&&&&&&&MeshFilter mf = gameObject.AddComponent&MeshFilter&();&&&&&&&&mf.mesh = new Mesh();&&&&&&&&mf.mesh.CombineMeshes(combine, false);&&&&&&&&gameObject.SetActive(true);&&&&&&&&mr.sharedMaterials = mats;&&&&}&}
创建了一个矩形 和一个 圆形。放在一个空物体下。将上面脚本绑定在空物体上。执行
效果如下:
将mesh合并成了一个。并赋值了材质。
转载请注明: &
or分享 (0)
本站所有内容如未标明转载的内容,均为原创内容。转载请注明来源!
发表我的评论spine-unity3D 学习笔记
spine-unity3D 学习笔记
[摘要:/spine-using-runtimes //skeletonData SkeletonAnimation skeletonAnimation = GetComponentSkeletonAnimation(); Debug.Log(skeletonAnimation.name);//猎取脚色名 Debug.Log(skeletonAnimation.skeleton.bones[5].ToSt]
/spine-using-runtimes
//skeletonData
SkeletonAnimation skeletonAnimation = GetComponent&SkeletonAnimation&();
Debug.Log(skeletonAnimation.name);//获取角色名
Debug.Log(skeletonAnimation.skeleton.bones[5].ToString()); //获取所有骨骼数组list&spine.Bone&
Debug.Log(skeletonAnimation.skeleton.slots[5].ToString());//获取所有插槽数组
Debug.Log(skeletonAnimation.skeleton.data.animations[0].name.ToString());//获取所有动画数组
skeletonAnimation.skeleton.FindBone("root").flipX =//根据骨骼名获取骨骼
Debug.Log(skeletonAnimation.skeleton.FindBoneIndex("root").ToString());//根据骨骼名获取骨骼的index
Debug.Log(skeletonAnimation.skeleton.FindSlot("torso").attachment.Name);//根据slot名获取slot
Debug.Log(skeletonAnimation.skeleton.FindSlotIndex("torso").ToString());//根据slot名获取slot index
Debug.Log(skeletonAnimation.skeleton.data.FindAnimation("walk").name);//根据动画名获取动画
Debug.Log(skeletonAnimation.skeleton.data.skins[0].name.ToString());//获取所有 skin
Spine.Attachment _attachment = skeletonAnimation.skeleton.data.skins[0].GetAttachment(5,"left lower leg");//从skin通过slot的index attachment的名获取attachment
//BoneData
Spine.Bone _bone = skeletonAnimation.skeleton.FindBone("left upper leg");
Debug.Log(_bone.parent.ToString());//获取骨骼的父骨骼
Debug.Log(_bone.data.length.ToString());//获取骨骼长度
Debug.Log(_bone.rotation.ToString());//获取骨骼旋转
Debug.Log(_bone.data.scaleX.ToString());//获取骨骼放缩
Debug.Log(_bone.data.scaleY.ToString());
Debug.Log(_bone.data.inheritRotation.ToString());// 是否旋转值相对父骨骼 true是相对父骨骼
Debug.Log(_bone.data.inheritScale.ToString());//是否放缩值相对父骨骼 true是相对父骨骼
//SlotData
Spine.Slot _slot =
skeletonAnimation.skeleton.FindSlot("torso");
Debug.Log(_slot.data.name);//获取slot的名字
Debug.Log(_slot.data.boneData.name);//获取slot挂靠的bone
Debug.Log(_slot.r.ToString());//获取slot的颜色R值
Debug.Log(_slot.data.attachmentName);//获取pose下slot的attachment名
_slot.data.additiveBlending =//获取或设置slot时候用additive blending来渲染
注释:用于特效?
//Animation
Debug.Log(skeletonAnimation.skeleton.data.animations[0].duration.ToString());//动画持续时间?
List&Spine.Timeline& _timeline =
skeletonAnimation.skeleton.data.animations[0].//获取动画timeline
//Skeleton
Spine.SkeletonData _data = skeletonAnimation.skeleton.//获取SkeletonData
Debug.Log(_data.bones[0].ToString()); //获取所有骨骼
Debug.Log(_data.slots[0].ToString());//获取所有slots
Debug.Log(skeletonAnimation.skeleton.drawOrder[0].attachment.Name);//获取所有DrawOder
Debug.Log(skeletonAnimation.skeleton.skin.name);//获取当前skin名
skeletonAnimation.skeleton.r = 0.5f;//对skin的整体偏色 有rgba四个参数
Debug.Log(skeletonAnimation.skeleton.time.ToString());//?
skeletonAnimation.skeleton.flipX =//skeleton翻转轴向
skeletonAnimation.skeleton.flipY =
skeletonAnimation.skeleton.x = 0;//skeleton的坐标
skeletonAnimation.skeleton.y = 0;
skeletonAnimation.skeleton.SetBonesToSetupPose();
skeletonAnimation.skeleton.SetSlotsToSetupPose();
skeletonAnimation.skeleton.SetToSetupPose();
//skeletonAnimation.skeleton.GetAttachment();//获取GetAttachment
//skeletonAnimation.skeleton.SetAttachment();
skeletonAnimation.skeleton.Update(0.5f);//?? }
--换装函数,但是必须在slot里有这个attachMent名
skeletonAnimation = GetComponent&SkeletonAnimation&();
skeletonAnimation.skeleton.SetAttachment("rear_upper_arm","muzzle");skeletonAnimation.skeleton.GetAttachment();
--动画翻转
skeletonAnimation.skeleton.FlipX =
else if(x & 0)
skeletonAnimation.skeleton.FlipX =
--播放动画
skeletonAnimation.state.SetAnimation(0, hitAnimation, false);
skeletonAnimation.state.AddAnimation(0, currentAnimation, true, 0);
注:(起始帧,动画名,是否loop)
//角色之间的绘制排序
renderer.sortingOrder = -5;
感谢关注 Ithao123精品文库频道,是专门为互联网人打造的学习交流平台,全面满足互联网人工作与学习需求,更多互联网资讯尽在 IThao123!
Laravel是一套简洁、优雅的PHP Web开发框架(PHP Web Framework)。它可以让你从面条一样杂乱的代码中解脱出来;它可以帮你构建一个完美的网络APP,而且每行代码都可以简洁、富于表达力。
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算。
产品设计是互联网产品经理的核心能力,一个好的产品经理一定在产品设计方面有扎实的功底,本专题将从互联网产品设计的几个方面谈谈产品设计
随着国内互联网的发展,产品经理岗位需求大幅增加,在国内,从事产品工作的大部分岗位为产品经理,其实现实中,很多从事产品工作的岗位是不能称为产品经理,主要原因是对产品经理的职责不明确,那产品经理的职责有哪些,本专题将详细介绍产品经理的主要职责
IThao123周刊

我要回帖

更多关于 unity3d spine 的文章

 

随机推荐