【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#脚本是不是忘记挂到物体上了哟)

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

点赞,关注!!!**

相关推荐
一个笔记本4 小时前
godot log | 修改main scene
游戏引擎·godot
nnsix5 小时前
Unity PicoVR开发 实时预览Unity场景 在Pico设备中(串流)
unity·游戏引擎
一只一只11 小时前
Unity之UGUI Button按钮组件详细使用教程
unity·游戏引擎·ugui·button·ugui button
神米米13 小时前
Maya快速安装UE4 布料权重绘制插件PhysX导出apx
游戏引擎·ue4·maya
WarPigs14 小时前
Unity阴影
unity·游戏引擎
一只一只15 小时前
Unity之Invoke
unity·游戏引擎·invoke
技术小甜甜16 小时前
【Godot】【入门】信号系统从 0 到 1(UI/玩法彻底解耦的通用写法)
ui·游戏引擎·godot
技术小甜甜18 小时前
【Godot】【入门】节点生命周期怎么用(避免帧循环乱写导致卡顿的范式)
游戏引擎·godot
tealcwu18 小时前
【Unity踩坑】Simulate Touch Input From Mouse or Pen 导致检测不到鼠标点击和滚轮
unity·计算机外设·游戏引擎
ThreePointsHeat18 小时前
Unity WebGL打包后启动方法,部署本地服务器
unity·游戏引擎·webgl