开启辅助访问
 找回密码
 注册帐号

扫一扫,访问微社区

蛮牛译馆

关注:497

当前位置:游戏蛮牛 技术专区 蛮牛译馆

查看: 7382|回复: 10

[外文翻译] 有趣的全新Mecanim(人形动画)功能

[复制链接]  [移动端链接]
抢楼 抢楼 本帖为抢楼帖,欢迎抢楼! 
7日久生情
2974/5000
排名
2885
昨日变化
3

289

主题

842

帖子

2974

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
31044
好友
19
蛮牛币
2251
威望
0
注册时间
2014-6-24
在线时间
370 小时
最后登录
2015-3-2

蛮牛译员

发表于 2015-2-25 11:05:06 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?注册帐号

x
HAVING FUN WITH THE NEW MECANIM FEATURES
有趣的全新Mecanim(人形动画)功能
一起翻译国外技术文章,为蛮牛们带来干货。欢迎大家来捧场哩↖(^ω^)↗
6NP8PDVJ%6GR@53QO~T]F3D.gif
       大家好!几个月前,我写过一篇关于在Unity 5.0中加入Mecanim功能的文章。今日,我想给大家展示出更酷炫而又操作简单的内容——你可以用到我们的新功能。
RANDOM NODES
随机结点
        创建随机“选择器”结点
       结合StateMachine入口结点与StateMachineBehaviours来创建随机“选择器” 结点真的相当容易。
IdleSM.png
       随后,你将需要分配每个int条件进行转换。
Condition.png
       然后,你添加一个StateMachineBehaviour到闲置的StateMachine上,并像下列代码这样实现OnStateMachineEnter:

[C#] 纯文本查看 复制代码
override public void OnStateMachineEnter(Animator animator, int stateMachinePathHash)</pre>
{
animator.SetFloat(“IdleIndex”, Random.Range(0.0f, 4.0f));
}

       目前,每次你将进入空闲的StateMachine时,将播放一个随机状态。
PROCEDURAL STATES
程序状态
       在5.0中,我们也在人形动力学解算器上做了一些改进,并添加了我们称之为IKHints的内容。这意味着目前你将能控制动力学链滚。利用StateMachineBehaviour的OnStateIK回调,你就可以反向设置状态。你甚至可以得到一个充分的程序状态。下面的代码将会使你的人形角色跳舞:

[C#] 纯文本查看 复制代码
{
// Do a sine based on the State normalized time
float normalizedTime = (1.0f + Mathf.Sin(Mathf.Repeat(stateInfo.normalizedTime, 1.0f) * Mathf.PI * 4)) * 0.5f;
// lower the body
animator.bodyPosition = animator.bodyPosition + new Vector3(0, -0.3f, 0);
// make hands move left and right based on sine
Vector3 leftHandPosition = animator.bodyPosition + new Vector3(-0.1f + normalizedTime * -0.2f, 0, 0.2f);
Vector3 rightHandPosition = animator.bodyPosition + new Vector3(0.1f + normalizedTime * 0.2f, 0, 0.2f);
// put elbow up
Vector3 leftElbowPosition = animator.bodyPosition + new Vector3(-5, 2, 0);
Vector3 rightElbowPosition = animator.bodyPosition + new Vector3(5, 2, 0);
animator.SetIKPosition(AvatarIKGoal.LeftHand, leftHandPosition);
animator.SetIKPosition(AvatarIKGoal.RightHand, rightHandPosition);
// align knees to the hand
animator.SetIKHintPosition(AvatarIKHint.LeftKnee, leftHandPosition);
animator.SetIKHintPosition(AvatarIKHint.RightKnee, rightHandPosition);
animator.SetIKHintPosition(AvatarIKHint.LeftElbow, leftElbowPosition);
animator.SetIKHintPosition(AvatarIKHint.RightElbow, rightElbowPosition);
// activate everything. Could be done on start
animator.SetIKPositionWeight(AvatarIKGoal.LeftFoot, 1.0f);
animator.SetIKRotationWeight(AvatarIKGoal.LeftFoot, 1.0f);
animator.SetIKPositionWeight(AvatarIKGoal.RightFoot, 1.0f);
animator.SetIKRotationWeight(AvatarIKGoal.RightFoot, 1.0f);
animator.SetIKPositionWeight(AvatarIKGoal.LeftHand, 1.0f);
animator.SetIKPositionWeight(AvatarIKGoal.RightHand, 1.0f);
animator.SetIKHintPositionWeight(AvatarIKHint.LeftKnee, 1.0f);
animator.SetIKHintPositionWeight(AvatarIKHint.RightKnee, 1.0f);
animator.SetIKHintPositionWeight(AvatarIKHint.RightElbow, 1.0f);
animator.SetIKHintPositionWeight(AvatarIKHint.LeftElbow, 1.0f);
}
Dance.gif

       甜蜜舞动!由Mixamo设计的动画
CREATE YOUR OWN TOOLS
创建专属自己的工具
       因为我们正在公开API,你可以创建各种各样的工具来新建并编辑人形资源。当你玩2D游戏时,我发现使用Blendtrees来做导航状态是非常实用的。因为它使用到精灵动画,所以我总需要给我不同的人形一遍又一遍地重复同样步骤。我通过使用API,创建了一个简单的EditorWindow(编辑窗口):
1.png
       所以,我只需要拖动我的精灵动画和目标对象。随后,我点击新建得到了以下内容:
2.png
       编写创建控制器的代码非常简单:

[C#] 纯文本查看 复制代码
// Creates the controller</pre>
UnityEditor.Animations.AnimatorController controller = UnityEditor.Animations.AnimatorController.CreateAnimatorControllerAtPath("Assets/" + target.name + ".controller");
// Adds 2 parameters
controller.AddParameter("VelX", UnityEngine.AnimatorControllerParameterType.Float);
controller.AddParameter("VelY", UnityEngine.AnimatorControllerParameterType.Float);
// Blend Tree creation
UnityEditor.Animations.BlendTree blendTree;
controller.CreateBlendTreeInController("Move", out blendTree);
// BlendTree setup
blendTree.blendType = UnityEditor.Animations.BlendTreeType.SimpleDirectional2D;
blendTree.blendParameter = "VelX";
blendTree.blendParameterY = "VelY";
for (int i = 0; i < animCount; ++i)
{
blendTree.AddChild(clips[i], DirectionToVector(directionValues[i]));
}
STATEMACHINES EVERYWHERE
状态机无处不在
       StateMachineBehaviours(状态机行为)的一个好处就是你可以在没有动画的情况下,使用StateMachines。因此,任何在你的游戏中的对象都需要某种StateMachine-esque逻辑,你可以使用我们上佳的可视化编辑器来解决问题
       例如,一个与音乐相关的StateMachine:
3MusicSM.png
       一个菜单StateMachine
MenuSM.png
       很快就会轮到你们开发人员了!
       Unity希望这些新特性会让你们兴奋。我们迫不及待地想看到你们开发人员的新成果!


评分

参与人数 1鲜花 +2 收起 理由
司马蕉箐 + 2 很给力!

查看全部评分

本帖被以下淘专辑推荐:


回复

使用道具 举报

7日久生情
2974/5000
排名
2885
昨日变化
3

289

主题

842

帖子

2974

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
31044
好友
19
蛮牛币
2251
威望
0
注册时间
2014-6-24
在线时间
370 小时
最后登录
2015-3-2

蛮牛译员

 楼主| 发表于 2015-2-25 11:05:28 | 显示全部楼层
Unity官网文章 原文链接是http://blogs.unity3d.com/2015/02 ... w-mecanim-features/

回复

使用道具 举报

6蛮牛粉丝
1298/1500
排名
1108
昨日变化
5

8

主题

280

帖子

1298

积分

Rank: 6Rank: 6Rank: 6

UID
29156
好友
2
蛮牛币
3862
威望
0
注册时间
2014-6-11
在线时间
302 小时
最后登录
2017-2-23

蛮牛哥

发表于 2015-2-25 16:59:57 | 显示全部楼层
学习,学习~

回复

使用道具 举报

排名
23950
昨日变化
17

0

主题

72

帖子

81

积分

Rank: 2Rank: 2

UID
75698
好友
0
蛮牛币
30
威望
0
注册时间
2015-2-25
在线时间
3 小时
最后登录
2015-3-2
发表于 2015-2-26 09:42:49 | 显示全部楼层

回复

使用道具 举报

排名
14894
昨日变化
31

0

主题

20

帖子

88

积分

Rank: 2Rank: 2

UID
75352
好友
0
蛮牛币
12
威望
0
注册时间
2015-2-21
在线时间
44 小时
最后登录
2016-9-10
发表于 2015-2-26 10:01:34 | 显示全部楼层
zs2334986邀请您访问-u3d游戏开发者社区【游戏蛮牛】unity3d官网
http://www.unitymanual.com/?fromuid=75352

回复

使用道具 举报

排名
1453
昨日变化
3

0

主题

151

帖子

1088

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
19818
好友
0
蛮牛币
2381
威望
0
注册时间
2014-4-1
在线时间
329 小时
最后登录
2017-1-18
发表于 2015-2-26 15:47:25 | 显示全部楼层
这不是机翻么..好生硬啊...

回复

使用道具 举报

7日久生情
2370/5000
排名
295
昨日变化

7

主题

254

帖子

2370

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
66848
好友
5
蛮牛币
2743
威望
0
注册时间
2015-1-8
在线时间
808 小时
最后登录
2017-3-1
发表于 2015-3-2 15:04:26 | 显示全部楼层
{:104:}{:104:}{:104:}{:104:}

回复

使用道具 举报

7日久生情
2219/5000
排名
270
昨日变化
1

40

主题

391

帖子

2219

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
19339
好友
19
蛮牛币
17104
威望
0
注册时间
2014-3-28
在线时间
465 小时
最后登录
2016-12-23

活力之星

QQ
发表于 2015-3-2 22:35:22 | 显示全部楼层
这个mecanim系统本来就很牛叉了,5.0这样搞就更加牛叉了。。。。。。。

回复

使用道具 举报

7日久生情
2017/5000
排名
193
昨日变化

0

主题

189

帖子

2017

积分

Rank: 7Rank: 7Rank: 7Rank: 7

UID
43328
好友
0
蛮牛币
4556
威望
0
注册时间
2014-9-3
在线时间
374 小时
最后登录
2017-1-11
发表于 2015-3-21 07:23:24 | 显示全部楼层
这应该是机翻么..好生硬啊...

回复

使用道具 举报

6蛮牛粉丝
1304/1500
排名
519
昨日变化
3

0

主题

11

帖子

1304

积分

Rank: 6Rank: 6Rank: 6

UID
40078
好友
0
蛮牛币
3659
威望
0
注册时间
2014-8-15
在线时间
253 小时
最后登录
2016-4-9
发表于 2015-3-23 08:06:47 | 显示全部楼层
好东西收藏了,谢谢!

回复

使用道具 举报

排名
32714
昨日变化
22

0

主题

4

帖子

9

积分

Rank: 1

UID
80740
好友
0
蛮牛币
13
威望
0
注册时间
2015-3-17
在线时间
1 小时
最后登录
2015-6-5
发表于 2015-6-4 16:10:45 | 显示全部楼层
学习,学习~{:90:}

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

快速回复 返回顶部 返回列表