Unity动画机制 Animator与Animator Controller教程

2023-11-18

Chinar blog www.chinar.xin

Unity动画机制 Animator Animation


本文提供全流程,中文翻译。

Chinar 的初衷是将一种简单的生活方式带给世人

使有限时间 具备无限可能

Chinar —— 心分享、心创新!

助力快速完成 Animator 动画的添加与控制

为初学者节省宝贵的时间,避免采坑!

Chinar 教程效果:
这里写图片描述



全文高清图片,点击即可放大观看 (很多人竟然不知道)


1

Animator —— 动画


Unity 中为我们提供了而全面的动画设计解决方案,用来完成游戏对象的动态效果的控制和创建

我们想要一个人物模型动起来,非常简单

只需要在人物的游戏对象上添加 Animator 组件

然后创建一个 Animator Controller 来控制对应的游戏对象的动画 Animator 即可
举个栗子黑白88
这里写图片描述
这里写图片描述


2

Animator Controller —— 动画控制器面板


选中 Animator Controller文件,点击 Open 即可打开控制器面板

新创建一个 Animator Controller 默认是没有任何状态的

需要自己创建空状态,并进行相应设置
举个栗子黑白88
这里写图片描述


3

Specifies Animation —— 指定动画


创建一个状态后,我们需要给该状态改名(为了区分状态),并指定一个动作 Motion

这里我创建的是 站立,所以就需要找到对应的 Idel 动画,指定给 Motion
举个栗子黑白88
这里写图片描述
相同流程创建跑步动作:
这里写图片描述


4

Status Swithing —— 状态切换


由于丧尸这个游戏对象,具备跑和站立 2 个状态/动作 Motion

我们需要的是点击鼠标,它就开始移动,保持跑起来的状态

走到目的地,它就停下,保持站立状态

所以这里 站立——跑,状态是需要切换的,如上图,我们可以简单的建立连接

那么我们需要添加一个 bool 参数,并设置对应条件,来使2个状态可以进行切换

添加完成后,我们就可以通过代码,来控制人物的站立和跑 2个状态了
举个栗子黑白88
这里写图片描述
具体流程:
这里写图片描述


5

Code Control —— 通过代码控制状态


完成上边所有设置,即可通过代码控制 动画状态的切换

调用 Animator 中的函数,通过设置 bool 值,即可改变 游戏对象的 动画状态

animator.SetBool("ZombieRun", true) 让僵尸切换为 跑 状态

animator.SetBool("ZombieRun", false) 让僵尸切换为 站立 状态

Animator.StringToHash("ZombieRun")可以将字符参数转为 ID(int 值) ,同样用来控制状态
举个栗子黑白88

using UnityEngine;
using UnityEngine.AI;


/// <summary>
/// <para>作用:控制丧尸的移动</para>
/// <para>作者:Chinar</para>
/// <para>创建日期:2018-08-05</para>
/// </summary>
public class ZombieMove : MonoBehaviour
{
    private NavMeshAgent navMeshAgent;
    private Animator     animator;


    /// <summary>
    /// 初始化函数
    /// </summary>
    void Start()
    {
        navMeshAgent = GetComponent<NavMeshAgent>(); //获取自身AI组件
        animator     = GetComponent<Animator>();     //动画组件
    }


    /// <summary>
    /// 每帧刷新
    /// </summary>
    void Update()
    {
        if (Input.GetMouseButton(1)) //右键
        {
            object     ray = Camera.main.ScreenPointToRay(Input.mousePosition); //屏幕坐标转射线
            RaycastHit hit;                                                     //射线投射碰撞
            bool       isHit = Physics.Raycast((Ray) ray, out hit);             //射线投射(射线,结构体信息) ;返回bool 值 是否检测到碰撞
            if (isHit)
            {
                print("坐标:" + hit.point);               //射线与物体碰撞点
                navMeshAgent.SetDestination(hit.point); //AI组件,设置目的地/终点
                animator.SetBool("ZombieRun", true);    //让僵尸跑起来
            }
        }
        if (navMeshAgent.remainingDistance < 0.5f) //当前位置 与终点 的  剩余距离<0.5f
        {
            animator.SetBool("ZombieRun", false); //让僵尸站立
        }
    }
}

动画效果:

这里写图片描述


支持

May Be —— 开发者,总有一天要做的事!


拥有自己的服务器,无需再找攻略

Chinar 提供一站式《零》基础教程

使有限时间 具备无限可能!

先点击领取 —— 阿里全产品优惠券 (享受最低优惠)


Chinar 免费服务器、建站教程全攻略!( Chinar Blog )


Chinar

END

本博客为非营利性个人原创,除部分有明确署名的作品外,所刊登的所有作品的著作权均为本人所拥有,本人保留所有法定权利。违者必究

对于需要复制、转载、链接和传播博客文章或内容的,请及时和本博主进行联系,留言,Email: ichinar@icloud.com

对于经本博主明确授权和许可使用文章及内容的,使用时请注明文章或内容出处并注明网址

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Unity动画机制 Animator与Animator Controller教程 的相关文章

  • unity官方demo学习之Stealth(二)警报灯设定

    为light alarm directional添加脚本DoneAlarmLight AlarmLight cs using UnityEngine using System Collections public class DoneAla
  • 【Unity Shader】屏幕后处理1.0:调整亮度/饱和度/对比度

    1 Unity中实现屏幕特效的基本步骤 什么叫屏幕后处理 Screen post processing effects 渲染完整个场景得到屏幕图像后对图像进行一系列操作 实现各种屏幕特效 这一步我们可以添加很多例如景深 Depth of F
  • 【UGUI】2D头顶血条制作

    前言 近期因为需要制作玩家和敌人头顶的2D血条 查找了很多博客 发现很多都拘束于Canvas的渲染模式必须要设定为ScreenSpace Overlay 还有应该是版本原因 我的是unity2019 1 11f1 用RecttTransfo
  • Unity中loading页加载的实现

    首先创建一个Global cs 使用单例用于存储场景的名字 便于后续脚本的调用 此脚本不必挂载在游戏物体上 using UnityEngine using System Collections public class Global Mon
  • 想去游戏公司做游戏,最重要的是什么素养?

    首先 要学会沟通 话说 动过去游戏公司的念头 做游戏 感觉很酷 但是 想想自己一不会编程 二不会画画 做策划 那好像是两边受气里外不是人出事第一个背锅的角色 想想也就想想 不过正好前些天我们发过一篇讲去日本学游戏的文章 说不定能派上用场 前
  • Bridge Champ举办人机对战赛:NFT游戏与传统竞技共生发展编织新格局

    概要 现在 NFT与体育竞技正日益紧密地联系在一起 一些体育项目开始推出与赛事或球队相关的NFT 同时也有部分NFT游戏开始举办电子竞技赛事 这种共生发展正在改变体育竞技的生态 笔者采访了桥牌冠军项目相关负责人 探讨NFT游戏与传统体育竞技
  • 程序员升职记 全关卡攻略&通俗思路 Human Resource Machine

    程序员升职记 全过关方法 通俗思路 博主本着能过就过的思想 写出的解答必然不是最优解 但是可以给大家提供一点思路来参考 其中17和22的解答整理自网络 特别是17的解答 要比博主的原解答巧妙不少 1 收发室 模拟程序输入输出 HUMAN R
  • Unity动画系统详解

    目录 动画编辑器 编辑器面板 动画复用 前言 人形重定向动画 Humanoid 通用动画 Generic 旧版本动画 Legacy 动画控制器 系统状态 切换条件 状态机脚本 IK动画 反向动力学 BlendTree 混合树 Animato
  • Unity保存图片到相册

    Unity保存图片到Android相册 Java 纯文本查看 复制代码 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
  • Tornado websocket 演示的 Nginx 配置?

    有人可以向我提供 Tornado websocket 聊天演示的 Nginx 配置吗 该演示位于 tornado demos websocket 像这样的配置将起作用 events worker connections 1024 http
  • 游戏弹窗找不到emp.dll怎么办?分享5个靠谱的解决方法

    在现代的游戏世界中 我们经常会遇到各种各样的问题 其中 最常见的问题之一就是 无法找到emp dll 或 emp dll丢失 那么 emp dll到底是什么 它有什么作用 为什么会出现丢失的情况呢 不用担心 本文将从这几个方面进行详细解析
  • 微信游戏如何开发

    中懿游游戏软件开发 微信游戏开发通常涉及使用微信小游戏平台进行开发 微信小游戏是一种在微信平台上运行的轻量级游戏 用户可以在微信中直接体验 无需下载安装 以下是在微信平台上开发小游戏的一般步骤 1 注册微信开发者账号 访问 微信开放平台 注
  • 计算机提示vcruntime140.dll丢失的解决方法,多种修复教程分享

    vcruntime140 dll是一个非常重要的动态链接库文件 它包含了许多运行时的函数和类 然而 有时候我们可能会遇到vcruntime140 dll无法继续执行代码的问题 这会给我们带来很大的困扰 那么 这个问题是什么原因导致的呢 又应
  • 揭开神秘面纱,探索犹格索托斯的庭院:一款令人陶醉的模拟经营+AVG游戏

    你是否曾梦想过踏入一个充满神秘与奇幻的世界 体验一番独特的冒险 现在 这个梦想将成为现实 我们荣幸地向你介绍一款全新的模拟经营 AVG游戏 犹格索托斯的庭院 犹格索托斯的庭院是一款极具创意的游戏 它将带你进入一个神秘而充满魅力的世界 在这里
  • 全面解析找不到xinput1_3.dll无法继续执行代码的多种解决方案(实用教程)

    xinput1 3 dll文件是什么 xinput1 3 dll是一个动态链接库文件 它是DirectInput的组件之一 DirectInput是微软公司开发的一种输入设备驱动程序 用于处理游戏控制器 键盘 鼠标等输入设备的信号 xinp
  • 显示多个 Google 路线的演示 (Google Maps API v3)

    大家好 有没有一个可以在单个 Google 地图上显示多个方向路线的功能演示 堆栈上的另一个问题 https stackoverflow com questions 3537676 google maps directions v3 mul
  • 盘点第三方支付行业中一些“专用术语”

    每个行业都有自己的行业术语 在官方场合被称为 术语 如果你是支付行业的新手 或者正在努力深入了解这个复杂但充满机遇的领域 那么掌握行业术语就是打开这扇门的关键 支付系统的需求文档和技术方案文档都充斥着专业词汇和行业术语 有些词汇容易理解 有
  • 什么是好的头像电子邮件示例?

    在 Ember js 文档中看到类似的演示后 我刚刚做了一个演示 该演示根据您的电子邮件获取您的头像 我目前正在使用 电子邮件受保护 cdn cgi l email protection作为默认值 但这似乎是错误的 因为它是一个 React
  • 游戏开发之常见操作梳理——武器装备商店系统(NGUI版)

    游戏开发中经常出现武器商店 接下来为你们带来武器装备商店系统的具体解决办法 后续出UGUI Json版本 敬请期待 武器道具的具体逻辑 using System Collections using System Collections Ge
  • 游戏开发常见操作梳理之角色选择一

    进入游戏后 我们经常会进入角色选择的界面 通常是左右两个按钮可以更改角色供玩家选择 对于这种界面我们通常使用数据持久化将角色信息存储起来 接下来的笔记中 我将使用自带的数据持久化系统对其进行操作 实现角色的选择页面 后续会更新xml系列的文

随机推荐

  • 文件上传之IIS6.0解析漏洞

    文章目录 1 判断iis版本 2 使用目录解析漏洞 2 1 写asp一句话木马 2 2 bp抓包 2 3 修改上传路径 2 4 实用工具连接 2 5 get shell 3 使用文件解析漏洞 3 1 写一句话马 3 2 上传 3 3 抓包改
  • mmyolo框架实现在VOC数据集上复现Yolov6教程(详细)

    写在开头 最近学习mmyolo的框架 想着它能将所有配置都写在一个config文件里 只需要改配置文件就可以改动模型 感觉挺方便的 就想着Yolov6用mmyolo框架来实现 但mmyolo并没有提供v6的voc实现配置 v5是有的 看下图
  • RocketMQ的消息优先级

    有些场景 需要应用程序处理几种类型的消息 不同消息的优先级不同 RocketMQ是个先入先出的队列 不支持消息级别或者Topic级别的优先级 业务中简单的优先级需求 可以通过间接的方式解决 下面列举三种优先级相关需求的具体处理方法 第一种
  • Linux环境下的jdk安装(大数据环境)

    jdk安装 创建软件存放目录 上传文件 我使用的MobaXterm 创建解压目录 解压jdk压缩包 修改软件名 使他简洁易操作 配置环境变量 让配置文件生效 查看jdk版本信息 将HP01 的usr文件夹整体拷贝到HP02 HP03目录下
  • 如何使用 FreeRTOS中的xQueueCreate,xQueueSend,xQueueReceive

    信号量Semaphore和互斥量mutex 只能用于进程间的同步 并不能传递更多的数据 在freertos 提供了messageQ 用来在实现进程同步的同时 传递数据 进程间通信 或者ISR和TASK之间通信 如果没有messageQ 则只
  • Object&Objects

    Object 概念 Object 是类层次结构的根 每个类都可以将 Object 作为超类 所有类都直接或者间接的继承自该类 换句话说 该类所具备的方法 所有类都会有一份 toString 作用 以良好的格式 更方便的展示对象中的属性值 重
  • c++ Json库读取和写入json文件

    include json include writer h include json include reader h include
  • Fabric中的“账户”体系

    本文的联盟链是以Fabric为例 本文中transaction翻译成事务 而非交易 联盟链相对于公链 最大的不同在于 联盟链上的数据不是对所有人都公开的 只有联盟内的成员才可以访问 写入链上数据 第二个重要的区别 联盟链不发币 所以联盟链里
  • WSL安装与使用(Ubuntu22.04)

    文章目录 概要 WSL介绍 WSL安装 安装环境 安装方式一 命令行安装 不推荐 可能出现奇怪的问题 安装方式二 通过控制面板安装 WSL 安装Ubuntu22 04 通过Microsoft Store Ubuntu更换镜像源 进入Ubun
  • I2C接口与SPI和UART接口的区别

    一 SPI I2C UART通信速率比较 SPI gt I2C gt UART 1 同步通信 gt 异步通信 2 同步通信时必须有一根时钟线连接传输的两端 3 都是串行通信方式 并行通信用于内部存储间的通信 如flash 4 适合传输的距离
  • python爬虫(爬取唯品会)

    import json import requests from bs4 import BeautifulSoup from selenium import webdriver from time import sleep class Vi
  • 磁盘设备类型获取函数

    将该部分内容保存到 cpp文件中可直接编译运行 用于辨别驱动器的类型 define MEDIA INFO SIZE sizeof GET MEDIA TYPES 15 sizeof DEVICE MEDIA INFO define IOCT
  • JAVA获取上一年的日期_java获取日期,前一年,前一月,前一周

    SimpleDateFormat format new SimpleDateFormat yyyy MM dd HH mm ss Calendar calendar Calendar getInstance 现在日期 String now
  • vue区分单双击事件

    基本思路 利用setTimeout gt 200 使单击事件在200s后再执行 如果200s内触发了双击事件 则使用clearTimeout this timeOut 清除该计时器 取消单击事件的执行 执行双击事件 代码如下 定义变量 da
  • 每日一练——Python基础(七)

    请设计一个好友管理系统 每个功能都对应一个序号 用户可根据提示 请输入您的选项 选择序号执行相应的操作 包括 1 添加好友 用户根据提示 请输入要添加的好友 输入要添加好友的姓名 添加后会提示 好友添加成功 2 删除好友 用户根据提示 请输
  • Accurate Scale Estimation for Robust Visual Tracking 学习笔记:

    Accurate Scale Estimation for Robust Visual Tracking DSST学习笔记 尺度变化是跟踪中比较基础和常见的问题 目标变小 跟踪器就会吸收大量没有用的背景信息 目标过大 跟踪器就会丢失很多特征
  • HDFS的block和切片(split)的联系和区别

    lt 1 gt 联系 HDFS的block和切片 split 的大小相等 lt 2 gt 区别 1 HDFS存储数据在数据节点上 block是数据节点储存数据的一个个单位 2 split是把block切分而成的虚拟定义 3 split是Ma
  • 华为机试-HJ1 字符串最后一个单词的长度-C语言、python

    刷题第一步 熟悉输入输出及基本套路 前言 题目描述 C语言 题解1 fgets 题解2 scanf 题解3 gets python 题解1 题解2 参考解析 方法一 使用split 直接返回长度 方法二 逐位遍历找空格 前言 本文主要用于个
  • Docker中成功安装修罗Xiunobbs论坛步骤

    组成 php7 mysql5 7 xiunobbs4 04 nginx 1 Pull镜像 docker pull nginx docker pull docker io centos mysql 57 centos7 docker pull
  • Unity动画机制 Animator与Animator Controller教程

    Chinar blog www chinar xin Unity动画机制 Animator Animation 本文提供全流程 中文翻译 Chinar 的初衷是将一种简单的生活方式带给世人 使有限时间 具备无限可能 Chinar 心分享 心