【Unity基础】5.动画曲线

【Unity基础】5.动画曲线

大家好,我是Lampard~~
欢迎来到Unity基础系列博客,所学知识来自B站阿发老师~感谢

(一)曲线编辑

(1) 动画曲线

上周我们创建了一个简单动画,让我们的矩形在第0帧时Y轴从0的位置,移动到30帧时Y轴为3的位置

如果物体是做匀速直线运动,我们就可以得知在第15帧的时候,Y轴的位置是1.5,在第20帧的时候Y轴位置是2,那实际上是不是呢?

很遗憾,虽然第15帧物体的位置确实在1.5,但是第20帧Y轴的位置确是在2.22,和我们预设的匀速运动不符合,那要搞清楚此时物体究竟是在做什么运动,我们就可以引出今天的主角动画曲线了

在我们的动画编辑器的左下方,有一个dopesheet简报默认按钮和curves曲线模式,点击curves我们就可以观察到这个物体随时间的变化在做什么样的运动

从上图我们可以观察到,物体的Y轴(绿色)是做一个曲线变速运动,这就和我们之前的数据验证的结果相符了

(2) 曲线编辑

那如果我们想让物体就做匀速运动要如何处理呢?

很简单,我们观察到运动曲线上有两个点,分别是我们0到30的关键帧,我们只需要选中它->选择both tangents(两侧的切线)->linear(线性),就可以把这个运动曲线设置成直线,物体也就做匀速直线运动了

此时我们再看第20帧的物体Y轴位置,就可以得出等于2的结果

(3) 更多曲线编辑选项

除了Both tangents之外,我们还可以设置left tangents和right tangents,也就是对关键帧的左侧和右侧运动曲线设置不同的值

而除了linear(直线)之外,还有Free(自由曲线),constant(常量不变),和weighted(重力)等

比如这样操作我们就可以重新让物体做曲线运动

而选择constant就可以让物体在某一帧才发生位置变化

(二)动画事件

(1)子节点动画

**现在打算设计一个直升飞机模型,通过控制其机翼的旋转来总结一下我们刚才学到的知识。**首先导入一个直升机模型,可以看到其包含前侧旋转翼和尾部旋转翼

我们按照上次课学习内容,在Animation文件夹创建两个新的动画Top和Back供飞机的两个机翼使用

把它们托到各自的组件上,然后打开动画编辑器,调整其transform组件的rotation属性

我们把尾部动画第0帧的x轴旋转角度设置为0,第30帧时候设置为360,那么就可以使飞机尾部螺旋桨在30帧之内旋转一周

但我们看到其一卡一卡的,很明显并不是我们想要的螺旋桨转动效果,我们应该打开动画曲线编辑,使之进行匀速运动

顶部的旋转动画也照葫芦画瓢设置一下就可以了,最后看看最终效果:

(2)动画回调事件

u3d的动画回调事件可以设定在跑到第几帧的时候,执行相应的回调函数,具体操作方式是:

创建一个C#脚本挂在动画挂载的物体上

编辑回调函数,比如说,我想飞机的尾翼跑到第20帧的时候,就停止转动

cs 复制代码
    void StopRotation()
    {
        Animation ani = GetComponent<Animation>();
        ani.Stop("Back");
    }

然后在动画编辑器中,选择想到执行该回调的帧,右键Add Animition Event,选择我们的回调方法(如果没有找到,需要验证下c#脚本是不是忘记挂到物体上了哟)

**好啦今天就到这里,感谢阅读!!!

点赞,关注!!!**

相关推荐
℡枫叶℡6 小时前
Unity - Import Activity Window 资源导入诊断信息窗口
unity·资源导入诊断
TO_ZRG8 小时前
Unity 证书校验
unity·游戏引擎
mxwin9 小时前
Unity Shader 切线空间数据是如何计算出来的
unity·游戏引擎·shader
mxwin13 小时前
Unity Shader 法线贴图跟切线空间有什么关系
unity·游戏引擎·贴图·shader
mxwin13 小时前
Unity Shader 贴图和采样的关系 如何保证贴图清晰
unity·游戏引擎·贴图·shader
心前阳光15 小时前
Unity之使用火山引擎实现文字提问流式回复
unity·游戏引擎·火山引擎
mxwin18 小时前
Unity Shader 什么是球谐光照 原理是什么
unity·游戏引擎·shader
心前阳光18 小时前
Unity之使用火山引擎实现语音识别
unity·语音识别·火山引擎
心前阳光18 小时前
Unity之使用火山引擎实现流式语音合成
unity·游戏引擎·火山引擎