Unity Animation -- 改进动画效果

这篇具有很好参考价值的文章主要介绍了Unity Animation -- 改进动画效果。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用曲线(Curves)改善动画 

      在上一篇笔记中(Unity Animation -- Overview_亦枫Leonlew的博客-CSDN博客),我们制作了简单的小球弹跳的动画,但这个动画看起来很不自然,小球的弹跳看起来就像是不受重力影响的物体,没有加速度的影响。要让小球的弹跳动画看起来更自然(不使用物理引擎,只使用动画),我们需要对中间帧进行调整,在Unity中,这是通过曲线编辑器(Curve Editor)来实现的。前面笔记中所用使用的Animation编辑器的一个部分叫做Dopesheet,它主要是关键帧被设置的地方。

        下面我们来看看Curve编辑器的使用:

        1. 在场景中选择小球对应的游戏物体,在Animation Editor中选择Ball_Bounce动画。然后在Animation编辑器的下方,点击Curves打开曲线编辑器。

Unity Animation -- 改进动画效果

         2. 使用鼠标滚轮或按F键进行缩小,直到我们看到了所有三个关键帧以及连接关键帧的曲线

Unity Animation -- 改进动画效果

        在编辑器中显示的曲线是关键帧之间的中间帧的可视化地表现,特别是它们的变化速度非常直观。如果此时预览动画,我们可以在过程中看到这个关系。在动画开始的前几帧,小球缓慢地降低,在中间加速掉落,然后在最后落地的时候变慢了一点。这种类型的变换被称为easing。我们下面来看看不使用easing时是什么情况。

        3. 右键点击第一个关键帧,然后在列表中选择Right Tangent -> Linear;

            右键点击中间的关键帧,然后在列表中选择Left Tangent -> Linear

            这样选择后,第一个关键帧和中间的关键帧之间的曲线会变成一条直线

Unity Animation -- 改进动画效果

         我们此时再点击Play按钮预览一下动画,注意观察一下和easing方式的区别(下落过程和弹回过程)

调整小球的easing

        1. 右键点击第一个关键帧,选择Camped Auto重置tangent到原始状态

        2. 右键点击中间的关键帧,选择Right Tangent -> Linear

        3. 在Animation编辑器中点击Play(三角)按钮预览一下

            现在这个动画看起来似乎更真实一点了

        4. 选择最后一个关键帧,我们可以看到有一个灰色的小的圆柄(handle),这个叫做切线handle(tangent handle)。

Unity Animation -- 改进动画效果

         5. 拖动这个handle,调整曲线让曲线的顶端更加圆滑一点。

        6. 预览并不断调整tangent handle,让小球的弹跳看起来更加真实,弹回来的时候,让动画看起来好像小球在空中停住了一会儿。

        7.右键点击中间的关键帧,选择Both Tangents -> Free,这样我们可以对这一帧的左右两侧的切线都进行自由地控制,我们将整体曲线调整成类似V字形的样子

Unity Animation -- 改进动画效果

创建挤压动画关键帧

        当物体以足够大的力碰到某个表面时,物体或者这个表面会发生形变。当撞击的能量被释放后,变形的物体会恢复到原来的形状(尽可能地接近原始形状)。在动画中,这个过程被封装成了称为squash(挤压)和stretch(拉伸)的技术中。

        先来创建挤压:

        1. 在Animation编辑器中,将Playehead放到第一个关键帧位置(0:00),打开关键帧记录功能(record按钮按下)

Unity Animation -- 改进动画效果

         2. 将Playhead移动到第二个关键帧,这个帧是小球触碰地面的帧。调整小球的Scale属性(按R键或者调整Inspector里的Scale属性,或者直接在动画编辑器中编辑这个关键帧的Scale属性),将Scale的Y调整为0.8

Unity Animation -- 改进动画效果

         3. 移动小球,让小球看起来和地面刚刚接触

                如果此时我们通过拖动Playhead,则我们可以手动地预览动画。这个过程称为scrubbing。我们从头拖到尾,可以发现小球现在是有挤压效果,但从动画一开始小球就在慢慢地被挤压(小球还未接触到地面之前也在变扁)。这不是我们想要得到的效果。

        4. 将Playehead移动到第一个关键帧(0:00处),选择Scale属性对应的菱形点,然后通过Ctrl+C(MAC系统上Command+C)复制一下这个关键帧。

        5. 将Playhead移动到小球刚刚接触地面之前的前一帧,然后Ctrl+V(MAC系统上Command+V)粘贴这个关键帧。

创建拉伸动画关键帧

        完成了挤压动画关键帧之后,接下来我们实现拉伸的关键帧。对于一个橡胶小球来说,当小球回弹时,会出现被拉伸的形状。

        1. 将Playhead移动到小球接触地面后的紧接着的下一帧位置,将Scale的Y调整到1.2

        2. 预览并跳帧调整一下挤压和拉伸的关键帧,达到满意效果后关闭Recording功能

Unity Animation -- 改进动画效果

让动画在场景中任意位置都能正常播放

        现在我们完成了小球弹跳的动画,但如果我们将小球初始位置移动到场景中的另一个位置时,会发生什么事情呢?我们想要达到的效果是小球的起始位置在新的地方,然后正常掉落并播放弹跳动画。但实际上并非如此。

        我们将小球移动到另一个位置,然后点击Animaiton编辑器的预览按钮(三角形)

        可以看到,动画播放时,小球立刻就回到了最初动画被创建时小球的原始位置上。这是因为关键帧里记录的信息是原始的信息。我们在Inspector中看到的Transfor Position的设置,是和3D空间里被选择物体的位置相关的(世界坐标)。这就麻烦了,我们好不容易制作了一个动画,但是这个动画只能在特定位置才能播放,这样很不灵活。幸运的是,有一种很简单的方法来解决这个问题。

        1. 我们撤销一下小球位置的改动,让小球回到原始位置,按Ctrl(Command) + Z

        2.  在Hierarchy窗口中,右键创建一个空游戏物体(Create Empty),重命名为BallParent

        3. 选择BallParent,在其Inspector属性中,Transform部分选择Reset,将其位置重置为(0,0,0)

Unity Animation -- 改进动画效果

         4. 将Ball拖动到BallParent游戏物体下方,让它成为BallParent的子物体

Unity Animation -- 改进动画效果

         5. 移动BallParent到场景中的另一个位置,然后在Animation编辑器中预览一下动画,现在小球可以在任意位置上进行弹跳动画播放了。

        我们选择Ball游戏物体,在Inspector中可以看到,小球的位置其实没有发生任何变化。但在Unity中,如果一个物体变成了另一个物体的子物体,它的transform值从世界空间变化为了局部空间(from global to local)。也就是说Ball现在transform里的位置信息,是相对于BallParent位置而言的。我们移动了BallParent游戏物体,并不会影响Ball本身动画里关键帧里的位置。

挑战:小球弹跳动画完善

        现实生活中,小球弹跳的样子是,第一次落地,回弹的距离最大,但也不会回到初始位置。随后的多次弹跳中,每一次回弹的距离会逐渐变小。接下来请自行实现一下这个效果。

Unity Animation -- 改进动画效果文章来源地址https://www.toymoban.com/news/detail-411220.html

到了这里,关于Unity Animation -- 改进动画效果的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【CSS3】CSS3 动画 ⑤ ( 动画速度曲线 | 设置动画步长 | 动画匀速执行 | 动画分 2 步执行 | 使用动画步长实现打字机效果 )

    CSS3 样式中 , 设置 动画速度曲线 的属性是 animation-timing-function 属性 ; animation-timing-function 属性定义了动画从 初始 CSS 样式 变为 结束状态 时 所消耗的时间 ; animation-timing-function 属性常用 属性值 如下 : linear : 动画在整个执行过程中速度都是匀速的 ; ease : 默认属性值 , 动画首先

    2024年02月13日
    浏览(48)
  • 011:vue结合css动画animation实现下雪效果

    GIF录屏文件太卡有点卡,实际是很丝滑的 在 src 下新建 components 文件,创建 VabSnow.vue 组件文件 没啥注意的,主要是scss的变量操作及css动画 😎

    2024年01月19日
    浏览(53)
  • Unity Animation -- 导入动画

            尽管Unity中的动画工具已经比较强大了,但对于非常复杂的或很长的动画,通常是由外部DCC创建。特别是对于角色动画来说,需要在动画过程中进行复杂的控制。因此我们通常需要将外部制作的动画导入到Unity中。         对于复杂的动画,制作过程会非常耗时。动

    2024年02月12日
    浏览(55)
  • Unity老动画系统Animation

    1、创建老动画系统 给要制作动画的GameObeject添加Animation组件 2、Animation参数 Animation:默认播放的动画 Animations:该动画组件可以控制的所有动画 Play AutoMatically:是否一开始就自动播放默认动画 Animate Physics:动画是否与物理交互 Culling Type:决定什么时候不播放动画     Alwa

    2024年02月06日
    浏览(42)
  • Unity Animation动画时间设置

    遇到一个需求,需要给角色添加一个翻滚动作,在翻滚同时无敌且可穿越敌人。 目前已有翻滚的动画,是使用Sprite制作的动画剪辑。如何匹配动画时间和脚色无敌时间?做到在翻滚结束时同时结束无敌与无碰撞设置。 在Animation设置窗口中,有Samples字段,可设置动画的采样帧

    2024年02月01日
    浏览(54)
  • Unity用Animation组件制作简单的动画

    游戏中经常会出现动态提示,例如提示当前金钱不足,一般会从屏幕中央弹出,然后缓慢的向上飘去。 今天游戏项目中遇到了这么个要求,以前做过几次,但总是会忘记,而且随着unity版本更新,新版本总有些莫名其妙的坑,今天写个文章记录一下。 首先用到的组件是Anima

    2024年02月04日
    浏览(59)
  • Unity 踩坑笔记 Animation动画不播放

    情况① 物体单挂Animation,无Animator,无法自动播放 原因 :两种Animation Clip 解决方案 : 注:此举会使其绑定的Animator失效 情况② 与上述相反,动画在Animator中无法播放 解决 :取消Legacy

    2024年02月12日
    浏览(41)
  • Unity中Animation创建的动画如何指定播放

    使用Unity自带的Animation制作的动画如何指定帧播放和结束? 1.选择需要播放的动画,Inspector面板右键Debug,勾选Legacy 2.添加脚本,挂载脚本

    2024年02月03日
    浏览(52)
  • Unity实现杀戮尖塔出牌效果( 三. 贝塞尔曲线引导箭头绘制,卡牌使用效果制作)

    1. 攻击类型卡牌 ①拖拽超过一定高度之后卡牌会移动到手牌中心位置 ②出现攻击引导箭头 (塞贝尔曲线) ③成功指向目标怪物后打出 2. 技能能力类型卡牌 ①可自由拖动 ②脱离手牌高度后打出 这里只展示此效果核心代码内容,重复代码不做赘述,上期(二.鼠标指向卡牌时,

    2024年04月12日
    浏览(64)
  • 曲线艺术编程 coding curves 第九章 旋轮曲线(ROULETTE CURVES)

    原作:Keith Peters https://www.bit-101.com/blog/2022/11/coding-curves/ 译者:池中物王二狗(sheldon) 源码:github: https://github.com/willian12345/coding-curves 曲线艺术编程系列第 9 章 一开始我本章标题我打算使用“次摆线与摆线(旋轮线)”。我想它们是两种不同类型的曲线,虽然有点儿联系。但随

    2024年02月08日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包