【Unity 学习笔记】动画组件和动画控制器

这篇具有很好参考价值的文章主要介绍了【Unity 学习笔记】动画组件和动画控制器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

动画是一款游戏不可缺少的一部分。在Unity中,我们可以直接使用Unity自带的动画系统来制作我们想要的动画,其操作相当便捷。

帧动画是2D像素游戏的主流,我将以帧动画为例记录我最近学习动画系统的一些收获。

Unity的动画系统有三个不可缺少的部分。第一,动画;第二,动画组件;第三,动画控制器。

动画和动画组件不难理解,动画是我们添加进Unity的资源文件,动画组件是添加进游戏物体的必要控件。

那么动画控制器是什么呢?

那不就是能控制动画的系统。

没错,但是如何控制呢?

首先我们需要知道为什么要有动画控制器这个东西。Unity中的动画和我们日常生活中理解的动画不太一样。在Unity中,动画是由一个个“动画片段”组成的,而不是我们小时候长达24分钟不间断的动画片。为了将这些“动画片段”组装成我们想要的动画,就需要动画控制器来判断各个动画片段什么时候该播放,什么时候不该播放。

也就是说,动画控制器其实就动画片段的播放流程控制器。

下面以实际的游戏工程来介绍Unity动画系统,涉及人物的移动,跳跃动画。

首先,我们需要为人物添加动画组件Animator。

【Unity 学习笔记】动画组件和动画控制器

第一个参数是Animation Controller,即动画控制器。

第二个参数是替身,我们做2D游戏的时候不需要关注这个。

其余的参数可以通过Unity代码手册查阅,本篇笔记不做修改。

有了动画组件,我们就需要一个动画控制器来绑定它。

在Project窗口右键Create -> Animation Controller。

可以在Animator窗口查看该控制器的具体内容(Windows->Animation->Animator)。

【Unity 学习笔记】动画组件和动画控制器

其中,Entry指动画开始,通常后面会接一个默认动画。

Any State指任何状态,后面接的动画任何状态都能跳转到。

Exit即退出,退出之后又会回到Entry。

将动画控制器拖入Animator组件中。

【Unity 学习笔记】动画组件和动画控制器

这样就完成了动画控制器和动画组件的绑定。

还记得Unity动画系统的三大组成部分吗?

动画,动画控制器,动画组件。

现在有控制器和组件,只缺动画了。

Unity为我们提供非常便捷的动画制作方式,通过连续播放一组图片从而达到动画效果。

接下来制作人物默认状态下的动画片段。

【Unity 学习笔记】动画组件和动画控制器

 点击Create,选择好文件夹,创建人物第一个动画片段吧。

【Unity 学习笔记】动画组件和动画控制器

 按住shift,选择一组图片拖入Animation中,一个动画片段就已经做好了。怎么样,是不是很简单?

修改采样率Samples,采样率越低,动画播放得越慢,通过不断调试来找到适合我们的采样率。

【Unity 学习笔记】动画组件和动画控制器

点击播放符号即可在场景中预览动画,每次预览完记得点一下Preview,结束预览状态。

一个动画片段显然不够我们使用,接下来我将需要的动画片段一次性创建好。

【Unity 学习笔记】动画组件和动画控制器

现在动画控制器中已经有了刚刚创建好的动画片段了。

先将PlayerJump删除,专注设计奔跑动画的逻辑关系。

右键PlayerIdle,选择Make Transition,创建一条过渡(转换)指示线,将其连接到PlayerRun,即人物奔跑的动画片段。

【Unity 学习笔记】动画组件和动画控制器

 点击这条新建的转换指示线,可以设置其中的转换条件。

【Unity 学习笔记】动画组件和动画控制器

 这个转换条件可以在Parameters中添加。

【Unity 学习笔记】动画组件和动画控制器

点击加号,可以看到有四种不同的转换条件类型,分别是浮点型,整型,布尔型和触发型。

现在不妨来思考一下我们什么时候需要播放人物动画。

没错,就是人物移动的时候。

那么和人物移动相关的变量有哪些可以作为条件变量的值呢?

速度是个不错的选项。

如果速度大于0,那么就播放人物动画。

有了想法,接下来就是实现了。

首先在Parameters中添加一个浮点型的参数velocityX。

接着选择转换指示线,将刚刚添加的参数加载进去。

同时建立一个PlayerRun返回PlayerIdle的转换指示线,条件相反。

【Unity 学习笔记】动画组件和动画控制器

这里有两个小问题。

第一个问题,我们的移动应该是连续不断的,不会随着动画的结束而恢复到默认状态。

因此,我们需要取消勾选Has Exit Time,让该动画完全受控于转换条件。

同时也可以取消过渡时间(如果值大于0会出现延迟效果)。

第二个问题,Unity在将一个变化的值和0比较时可能会出现一些小错误,为了减少这种错误,我们可以将播放动画的条件设置为velocityX大于0.1。

下面最后修改过后的设置图。

【Unity 学习笔记】动画组件和动画控制器

那么velocityX的值究竟如何和速度进行绑定呢?

现在就需要我们自己写脚本了,我在这里为人物新建了一个PlayerAnimation脚本,专门管理动画相关的代码。

思考我们需要获取哪些组件和变量。

首先是动画组件,只有获取动画组件才能为velocityX的值赋值。

其次是刚体组件,我们需要将刚体中X轴的速度传递个velocityX。

代码如下:

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

public class PlayerAnimation : MonoBehaviour
{
    private Animator anim;

    private Rigidbody2D rb;

    private void Awake()
    {
        anim = GetComponent<Animator>();
        rb = GetComponent<Rigidbody2D>();
    }

    private void Update()
    {
        anim.SetFloat("velocityX", Mathf.Abs(rb.velocity.x));
    }

}

SetFloat方法的意思是将刚体X轴速度的绝对值传给velocityX,除了SetFloat外,还有SetBool、SetInt和SetTrrigger,除了SetTrigger,其余的都有两个参数,第一个参数是条件参数的名称,第二个参数是要传递的值。由于这个值需要实施检测,因此放在Update()中。

现在我们的人物已经可以自由奔跑了,接下来制作跳跃动画。

与奔跑动画不同,跳跃动画由4个不同的动画片段共同组成,每个动画片段表示一个跳跃的阶段。

在这种情况下,我们可以直接使用Unity自带的一个十分方便的操作——混合树(Blend Tree)。

在动画控制器中右键新建一个混合树。

点击混合数,在Inspector窗口中的添加四个Motion。

【Unity 学习笔记】动画组件和动画控制器

每个Motion对应一个跳跃的动画片段。

        【Unity 学习笔记】动画组件和动画控制器 

新建一个条件参数velocityY,记录Y轴方法人物的运动速度,并将Parameter修改为velocityY。

注意到现在动画片段的切换门槛不可以手动修改,这是因为我们选中了Automate Threshold,将其取消勾选就可以手动修改了。

【Unity 学习笔记】动画组件和动画控制器

【Unity 学习笔记】动画组件和动画控制器

  接着仿照移动动画在脚本中添加velocityY的赋值就行了。

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

public class PlayerAnimation : MonoBehaviour
{
    private Animator anim;

    private Rigidbody2D rb;

    private CheckState checkState;

    private void Awake()
    {
        anim = GetComponent<Animator>();
        rb = GetComponent<Rigidbody2D>();
        checkState = GetComponent<CheckState>();
    }

    private void Update()
    {
        anim.SetFloat("velocityX", Mathf.Abs(rb.velocity.x));
        anim.SetFloat("velocityY", rb.velocity.y);
        anim.SetBool("isGround", checkState.isGround);
    }

}

这样,跳跃动画就做好了。文章来源地址https://www.toymoban.com/news/detail-470184.html

到了这里,关于【Unity 学习笔记】动画组件和动画控制器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 嵌入式学习笔记(32)S5PV210的向量中断控制器

    6.6.1异常处理的2个阶段 可以将异常处理分为2个阶段来理解。第一个阶段是异常向量表跳转;第二个阶段是进入了真正的异常处理程序irq_handler之后的部分。 6.6.2回顾:中断处理的第一个阶段(异常向量表跳转阶段)处理 (1)第一个阶段之所以能够进行,主要依赖于CPU设计时

    2024年02月07日
    浏览(48)
  • 学习笔记二十八:K8S控制器Daemonset入门到企业实战应用

    DaemonSet控制器能够确保k8s集群所有的节点都运行一个相同的pod副本,当向k8s集群中增加node节点时,这个node节点也会自动创建一个pod副本,当node节点从集群移除,这些pod也会自动删除;删除Daemonset也会删除它们创建的pod daemonset的控制器会监听kuberntes的daemonset对象、pod对象、

    2024年02月05日
    浏览(34)
  • 学习笔记二十七:K8S控制器Statefulset入门到企业实战应用

    用于管理有状态应用程序的部署。与无状态应用程序不同,有状态应用程序在运行时通常要求稳定的网络标识和持久性存储。 有状态服务:StatefulSet是有状态的集合,管理有状态的服务,它所管理的Pod的名称不能随意变化。数据持久化的目录也是不一样,每一个Pod都有自己独

    2024年02月06日
    浏览(37)
  • 从UE5导出Metahuman面部控制器动画并导入maya教程

    从UE5导出Metahuman面部控制器动画并导入maya教程 B站视频

    2024年02月12日
    浏览(26)
  • Unity 第三人称 玩家控制器+相机控制器

    今天给大家分享一个简单的Unity第三人称视角下玩家控制器和相机控制器的脚本编写方法。   效果如下: 主要分三部分实现:人物旋转、人物移动、相机旋转。 1.人物移动: 首先获取到人物水平和垂直移动的参数: 因为人物移动的方向跟摄像头一致,所以需要根据摄像头的

    2024年02月06日
    浏览(43)
  • 基于PID控制器的四旋翼无人机控制系统的simulink建模与仿真,并输出虚拟现实动画

    目录 1.课题概述 2.系统仿真结果 3.核心程序与模型 4.系统原理简介 4.1四旋翼无人机的动力学模型 4.2 PID控制器设计 4.3 姿态控制实现 4.4 VR虚拟现实动画展示 5.完整工程文件        基于PID控制器的四旋翼无人机控制系统的simulink建模与仿真,并输出vr虚拟现实动画,输出PID控制器

    2024年04月09日
    浏览(45)
  • [足式机器人]Part2 Dr. CAN学习笔记-Advanced控制理论 Ch04-7 LQR控制器 Linear Quadratic Regulator

    本文仅供学习使用 本文参考: B站:DR_CAN 线性控制器设计- 轨迹跟踪(Fellow a Desired Path)

    2024年02月02日
    浏览(48)
  • Unity中人物控制器

       在Unity中控制器是很常见的功能,一般的人物控制器有两种方法,一种是通过代码实现,另外一种就是通过Unity中的API实现。   这里主要介绍第一种方法。   首先对控制器步骤进行分析。 步骤1:通过方向键控制人物移动。 步骤2:控制摄像机跟随人物 步骤1:通过方

    2024年02月13日
    浏览(32)
  • Flutter组件--TabBar使用详情(分段控制器)

      一个显示水平行选项卡的 Widget 。 通常创建为  AppBar  的  AppBar.bottom  部分并与  TabBarView  结合使用 在什么情况下使用TabBar 当你的app内容类别比较多的时候,我们常常会用到 TabBar ,例如网易新闻、京东、B站等,所以TabBar是一个使用非常频繁的组件。 步骤一:创建TabC

    2024年02月02日
    浏览(34)
  • 飞天使-k8s基础组件分析-控制器

    控制器含义解释 pod的标签与注释 ReplicaController ReplicaSet Deployments DaemonSet Job Cronjob 参考文档

    2024年02月11日
    浏览(31)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包