查看: 1094|回复: 40

[其他] 介绍如何进行Unity3D的动画教程

[复制链接]

5

主题

20

听众

202

积分

Rank: 2

升级   0.67%

发表于 2013-9-6 09:35 |显示全部楼层
共享资源获取更多积分!share your resources get more credits!
在Unity3D中,我们能很方便的使用4个动画,默认的是走,跑,跳,待机动作,可当我们根据场景需要,添加其他动画时,会遇到一些问题,如动画只播放一帧。
附加的动画允许你覆盖其他正在播放的动画。当制作附加动画时,Unity会计算动画中的第一帧和当前帧的不同。然后,unity3d会播放刚刚计算出来的不同的帧。
总结问题的出现原因:
animation.Play()在播放动画时,是每一帧每一帧播放的,播放一个完整的连贯的动画,function Update(){} 函数是每一帧刷新时会自动执行的函数。而在主角上,我们已经拖了一个third person controller,里面也有一个update()函数来控制主角的走、跑、待机,等动作,通常情况下,主角的third person controller 的update()函数里的待机动作是ZJidle. 我们又写了一个代码来控制主角开门、打钩的动作,代码里也有update()函数,这样程序在每次刷新帧的时候就会执行两个update()函数,从第一个update()函数里的play切换到另一个update(){}函数里的play()函数。这就导致了动画的卡帧。
解决方法:
法一:在另一函数中设置CrossFade,函数,给动画分层,这样在update()函数执行时,会自动的把third person controller 中update(){}函数里的动画淡出,淡入现在的动画。
法二:在另一个函数中设置一个boolean标志位。third person controller 的update(){}到我们写的函数的update(){},这样更新每一帧时,就会先触发third personcontroller()里的update()函数,再触发我们写的函数里的update()函数,由于我们的函数里面用了boolean变量来控制,unity会有记忆功能,先执行我们写的这个函数的update()函数。


0

主题

20

听众

203

积分

Rank: 2

升级   1%

发表于 2017-5-9 08:23 |显示全部楼层
很不错
回复

使用道具 举报

0

主题

20

听众

201

积分

Rank: 2

升级   0.33%

发表于 2017-5-9 08:22 |显示全部楼层
说的非常好
回复

使用道具 举报

0

主题

20

听众

203

积分

Rank: 2

升级   1%

发表于 2017-5-9 08:43 |显示全部楼层
很好哦
回复

使用道具 举报

0

主题

20

听众

202

积分

Rank: 2

升级   0.67%

发表于 2017-5-9 08:42 |显示全部楼层
不错不错
回复

使用道具 举报

0

主题

20

听众

201

积分

Rank: 2

升级   0.33%

发表于 2017-5-9 09:21 |显示全部楼层
LZ真是人才
回复

使用道具 举报

0

主题

20

听众

203

积分

Rank: 2

升级   1%

发表于 2017-9-3 12:44 |显示全部楼层
很不错
回复

使用道具 举报

0

主题

20

听众

202

积分

Rank: 2

升级   0.67%

发表于 2017-9-3 13:07 |显示全部楼层
真心顶
回复

使用道具 举报

0

主题

20

听众

203

积分

Rank: 2

升级   1%

发表于 2017-9-3 13:16 |显示全部楼层
说的非常好
回复

使用道具 举报

0

主题

20

听众

201

积分

Rank: 2

升级   0.33%

发表于 2017-9-3 13:17 |显示全部楼层
很好哦
回复

使用道具 举报

温馨提示:求助请到“Unity技术讨论”版块中发帖,便于集中解决!
您需要登录后才可以回帖 登录 | 立即注册

懒人模式:

关闭

站长推荐 上一条 /1 下一条

Unity3D游戏开发联盟(资源共享平台) -Unity3D,Unreal ( 苏ICP备12051100号 )   

GMT+8, 2019-11-14 17:53 , Processed in 0.134398 second(s), 38 queries .