加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

Unity Animator动画的动作切换对比

(2017-09-29 10:22:56)
分类: unity3d


有一个功能,当子弹打到敌人身上使其血量为0时,让其播放死亡动作。

这个要求,看似很简单,

但是,实现起来的时候,会有几个问题,

如果是用 

Animator 

http://s4/mw690/005N7Rnmzy7eBXi0srV33&690Animator动画的动作切换对比" TITLE="Unity Animator动画的动作切换对比" />
http://s4/mw690/005N7Rnmzy7eBXjEf3Jf3&690Animator动画的动作切换对比" TITLE="Unity Animator动画的动作切换对比" />

这种形式的话, 会有一个问题,

假如,这个行走的动作,是两秒,

当子弹打到敌人身上,至其血量为0时,此时,人物应该是播放死亡倒地动作,

但是,因为这个行走的动作,可能有时是看上去还可以,有时却感觉,

人物走着走着就死亡了,当这个人物播放死亡动作的时候,可能玩家根本没开枪,

这种方式,有时感觉有点“怪异”。

如果是想要动作切换的动作快一点,可以调节 行走的动作速度,

但是,这又造成了人物突然间速度加快的感觉,

最好是,当玩家发射的子弹打到僵尸时,死亡的那一瞬间,就开始播放死亡动作是最好的。

我们可能会用代码,强制让其直接播放 死亡动作,

功能上,可能用 Play直接来播放死亡动作,

但是,这又有一个问题,就是 动作切换的太僵硬了。

http://s9/mw690/005N7Rnmzy7eBXSXnEA98&690Animator动画的动作切换对比" TITLE="Unity Animator动画的动作切换对比" />

http://s5/mw690/005N7Rnmzy7eBXT3kEs54&690Animator动画的动作切换对比" TITLE="Unity Animator动画的动作切换对比" />

上面两张图,是两种动作切换的方式,可能GIF图的录制效果看不太出来区别,

但是实际真机上,区别是非常明显的,

http://s9/mw690/005N7Rnmzy7eBY0IlvO68&690Animator动画的动作切换对比" TITLE="Unity Animator动画的动作切换对比" />

http://s5/mw690/005N7Rnmzy7eBY0NwTW44&690Animator动画的动作切换对比" TITLE="Unity Animator动画的动作切换对比" />

这两种动作切换时,Animator的情况,

一种是 walk动作和deadType1都在播放,一种是只有 deadType1在播放,

区别在这里,
http://s5/mw690/005N7Rnmzy7eBY5mqr254&690Animator动画的动作切换对比" TITLE="Unity Animator动画的动作切换对比" />
一种切换时,用的是 Play,这种就是直接停止当前动作,转到另一个动作,

一种是 CrossFade,这种是告诉Animator,将要切换到 哪个动作,用多少时间做准备,

这里,我设置的 crossFadeTime是 0.2,具体设置多少,

最好是在真机上,来回测试几次,记录下两个动作切换看上去比较自然的值,记录下来使用。

这个值是相对值,而不是绝对现实世界中的0.2秒。

经过 CrossFade切换的动作,

在视觉上,就自然的多了。


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有