Unity用Animation组件制作简单的动画

Posted 听雨眠丨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Unity用Animation组件制作简单的动画相关的知识,希望对你有一定的参考价值。

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

先创建一个文件夹,添加一个Animation。

然后创建一个提示框文本,添加上Animation组件。

然后将刚才创建的Animation拖上去。

注意:在project面板下点击Animation组件是无法添加动画的。

需要点击具体的物体,比如文本,然后添加动画。
此处我们只需要改变位置,添加一个动画

此处我们选择位置。


最上面的这一栏,代表的是帧数,正常情况下0~60帧为一个循环就够用了。
点击左上角的红色录像按钮,代表开始录制动画。
此时,0帧时刻的位置我们不要管,移到60帧的位置,将文本的Y坐标增大。
然后点击这个播放按钮,会发现文本动起来了。

到此,一个动画效果就做好了,关掉录像,点击运行正常来说就刻意看到动画效果。但是unity高版本有一个坑(我用的是2019),需要点击动画组件,然后打开debug模式,将Legacy勾选上,才会正常运行。


此时有个问题,就是如何控制这个文本隐藏了,总不能一直放在这里把,最笨的方法是写一个延时调用Invoke,算好动画时间,将该物体隐藏。
进阶方法是用AnimationEvent

在上方点击右键,添加event,或者在左方点击小图标都可以。

点击之后右边会有一个AnimationEvent,这里点击可以选择脚本上绑定的脚本写的方法(Text组件),事件的方法需要写在这个脚本上,目前我只知道这一种方法,后续有其他的方法我还在补充。


完整的代码

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class View: MonoBehaviour

    public AnimationTest animationTest;

    private void Update()
    
        if (Input.GetKeyDown(KeyCode.A))
        
            animationTest.gameObject.SetActive(true);
        
    


using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class AnimationTest : MonoBehaviour

    public void EndEvent()
    
        this.gameObject.SetActive(false);
    


补充:我这里动画模式选择的是激活就播放,所以只要控制物体显示即可,如果其他模式可能要调用组件播放动画。

Demo

Unity 2D Animation——3.待机动画录制

参考技术A 上一回我们介绍了 Unity中的2D IK系统 ,这一回我们讲讲如何录制第一个动画——待机动画。

首先打开Unity动画窗口,点击Window——》Animation——》Animation。可以看到下方的时间轴,跟大部分动画制作软件一样,Unity也有一条时间轴。注意这里的Animation窗口和Animator窗口,不要混淆。Animation是制作动画剪辑用的,而Animator是设置动画状态机用的。

创建动画剪辑的时候一定要清楚目前选中的节点,本例中选择的是Player节点,最外层节点。在这个节点上创建Animation,用于控制全身的动作。同时要确保下子节点中没有创建Animation组件。

在弹出的对话框中给新创建的动画剪辑命名,待机动画命名为idle_animation。创建Animations目录,保存于Animations目录中,养成分目录的好习惯,便于资产的管理。

录制动画之前,需要将角色中需要录制动画的所有节点的position,rotation全部设置添加到关键帧中。在Hierarchy层级窗口中,我们选择如下图所示的节点,注意选择之前可以按住alt键并点击MBoy左侧的小三角,就可以打开MBoy下所有的子节点。选中第一个节点后按住shift键,再选中最后一个节点就可以全部选中,再按住ctrl键来剔除不需要的节点。其中骨骼端点的空节点都是不需要的,不需要通过这几个点来控制IK点的运动。但是最下方的几个Target必须得加入进去,这几个点是控制IK运动的目标点。

选中节点之后,在Animation窗口中点击录制关键帧按钮,进入录制关键帧模式。

在Inspector检视窗口中找到Position属性,在上面右键单击,弹出菜单中选择添加关键帧Add Key,将上一步中选中的所有节点的Position属性全部添加到关键帧中。重复上述步骤将Rotation属性也添加关键帧Add Key。

添加完关键帧后,Potision和Rotation属性分别如图所示。

复制第0帧的所有关键帧,粘贴到第60帧上。点击最上面的菱形即可选中下面所有的关键帧。按ctrl+c进行复制,在第60帧上按ctrl+v进行粘贴。保证第0帧的关键帧与第60帧的关键帧一致,完成了一个60帧的循环。

在第30帧处,选中根骨骼进行向下移动,可以看到时间轴上已经记录了当前的动作,加入了新的关键帧。左右拖动时间轴可以看到动画效果。(unity2019和2021点击动画播放按钮可以正常看到动画,2020点击动画播放按钮看不到动画效果,不知道是不是unity的bug,直接运行项目倒是正常的。)

播放动画查看动画效果,可以反复优化动作。

以上是关于Unity用Animation组件制作简单的动画的主要内容,如果未能解决你的问题,请参考以下文章

unity3d播放器和animation不一致

unity 动画系统不会用

Unity 2D Animation——3.待机动画录制

Unity Animator简单使用

Unity 动画系列一 属性动画 序列帧动画

unity 5.6 animation与anmimator