Skip to content
L edited this page Sep 4, 2019 · 5 revisions

这里讲的是旧版的动画
链接

流程

录制动画->保存成资源->代码调用资源播放动画/自动播放动画
录制动画的本质是记录一段时间内物体的变化(旋转、移动、颜色、材质等)
eg.自然地打开门

Animation View

通过Window->Animation打开动画视图
通过动画视图可以直接创建、修改动画片段(Animation Clips)
QQ图片20190904180214

创建动画片段

为物体添加Animation组件
QQ图片20190904180520
在动画视图中创建片段
添加要修改的属性(动画本质就是随时间属性发生变化)
QQ图片20190904180933

时间线

QQ图片20190904180949
数字显示为秒数、帧数
eg.1:30表示1秒和30帧
可以单击时间线上的任何位置预览或修改动画片段
QQ图片20190904181223
使用按钮跳入下一帧或者上一帧,或者键入特定书直接跳到指定帧

录制

点击红按钮(选中状态)开始录制
QQ图片20190904182456
添加需要修改的属性Add Property
选择关键帧,找到时间点(在时间线上双击即可添加时间点)
在Inspector面板修改属性/在Scene中操作
录制完成
中间的时间动画会自动补齐
点击Perview预览
任何组件以及材质的属性都可以进行动画处理,即使是自定义脚本组件的公共变量

绑定动画

QQ图片20190904182406
QQ图片20190904185439

代码调用动画片段

链接

//门是否关闭
private bool doorState = true;
private void OnMouseDown()
{
    Animation animation = GetComponent<Animation>();
    var name = "Door";
    if (doorState)
    {
        //打开门(动画是开门动画)
        //[]中填写动画片段名称
        animation[name].speed = 1;
        //动画从0->animation[name].length播放,所以没有问题
    }
    else
    {
        //关闭门
        //speed=-1倒着播放
        animation[name].speed = -1;
        //之前的动画完成了,确认门完全打开
        //从动画最后开始播放(默认是从0->0播放),这里需要从animation[name].length->0播放 
        if (animation.isPlaying == false)
        {
            animation[name].time = animation[name].length;
        }
    }
    doorState = !doorState;
    //播放动画
    animation.Play(name);
}
Clone this wiki locally