U3D游戏开发之骨骼动画相关
目录
1 作为U3D程序如何制作骨骼动画
2 骨骼动画程序代码相关
这个内容我在很久之前就想写了,很多项目也与骨骼动画挂钩,今天我们揭秘的是2D骨骼动画。来聊一聊大家可能非常关注的两个问题:作为程序如何制作骨骼动画?接到美术的骨骼动画之后应该如何制作骨骼动画的代码相关。
于是我们带着这个问题,开始今天的讲解:
首先在使用骨骼动画之前,要导入骨骼动画的Spine库,登录官方选择unity的位置下载,然后将其放置到unity内部即可。官方地址:http://zh.esotericsoftware.com/
1 作为U3D程序如何制作骨骼动画
我们在游戏开发过程中,可能会突然想参加很多各种各样的游戏比赛,这些比赛大家一起组队,各司其职。但是往往在组队过程中,你会发现美术的数量非常稀缺,甚至你可能组队不到美术。然而项目可能需要大量的美术内容。这个时候,骨骼动画就派上用场了,这可以大大降低美术的工作量。(至少在动画方面)
我在制作聚光灯项目的时候就是遇到了美术不够的情况,于是我开始使用unity制作骨骼动画。(虽然不专业,但是看起来能用,至少可以应对这些突发情况)
以下我讲解的内容都在unity内部进行。
当我们拿到美术素材的时候,第一时间将其放入unity,并且设置为2D and UI的模式,然后点击编辑模式开始制作骨骼动画:
点开之后你会看到这个页面:(将左上角设置为:Skinning Editor)
设置完骨骼之后:
此时,就自动给你蒙皮并且自动给出了权重,这个时候你可以移动骨骼查看动画情况,如果发现动画被拉伸严重就说明权重不对,需要重刷权重:
然后反复确认动画情况即可,最后点击Apply保存。
制作好之后将图片拖出,并且挂载这个脚本,并且点击自动生成骨骼:
这个时候你可以在编辑器之中随意操控骨骼,然后利用unity自带的动画Animation:
如此,一个简易版骨骼动画制作完成。
2 骨骼动画程序代码相关
如果你团队有专业动画师,制作了spine动画,你将如何使用代码控制呢?
骨骼动画直接播放的代码:(以眼睛跟随为例)
关联骨骼,对骨骼进行代码上的位移控制:
骨骼动画事件相关:
一小段示例代码:
/// <summary>
/// 玩家攻击
/// </summary>
private void PlayerAttack()
{
if (_ePlayerTypes != EPlayerType.Attack)
{
_ePlayerTypes = EPlayerType.Attack;
_attackNum+=1;
switch (_attackNum)
{
case 1:
ReSetTimeAttack();
_sa.AnimationState.SetAnimation(0, "6_Attack_1", false);
break;
case 2:
ReSetTimeAttack();
_sa.AnimationState.SetAnimation(0, "7_Attack_2", false);
break;
case 3:
ReSetTimeAttack();
_sa.AnimationState.SetAnimation(0, "8_Attack_3", false);
break;
case 4:
ReSetTimeAttack();
_sa.AnimationState.SetAnimation(0, "9_Attack_4", false);
_attackNum = 0;
break;
}
_sa.AnimationState.Complete+= (t) =>
{
Spine_Complete();
};
}
}
/// <summary>
/// 动画结束时调用的方法
/// </summary>
private void Spine_Complete()
{
if (_ePlayerTypes == EPlayerType.Attack||_ePlayerTypes==EPlayerType.Dodge)
{
Idle();
//_ePlayerTypes = EPlayerType.Null;
}
}
作者将持续更新,创作不易,请点一个小红心支持一下吧!关注我,了解更多精彩!