U3L14-2——Animator Controller动画控制器(状态机)
U3L14-2——Animator Controller动画控制器(状态机)
创建动画状态机
通过为场景中物体创建动画时自动创建
手动创建动画状态机文件
基础使用——初识动画状态机窗口
左侧面板
Layers:动画层级页签,为动画添加更多的层级,层级权重高的动画播放会覆盖层级权重低的
Parameters:参数页签,为动画状态机添加控制状态切换的参数
眼睛图标:显隐左侧面板
右侧面板
网格化布局区域: 主要用于编辑状态之前的切换关系
1.窗口中的每一个矩形表示一个状态
2.窗口中的每一个箭头表示一个切换条件
矩形说明:
默认三大矩形:
绿色Entry矩形:进入状态机流程
红色Exit矩形:退出状态机流程
Any State:任意状态,代表状态机中的任意状态
人为添加矩形:
橙色矩形:一开始的默认状态动画,和Entry相连
表示一开始播放的动画
灰色矩形:自己添加的某一种动作状态
基础使用——添加动画
自动添加——为对象创建动画后会自动将动画添加到状态机中
手动添加1——将动画文件拖入到状态机中 (注意:老动画拖入会有警告)
手动 ...
U3L14-1——有限状态机
U3L14-1——有限状态机
有限状态机
有限状态机(Finite - state machine, FSM)
又称 有限状态自动机,简称 状态机
是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型
有限:表示是有限度的不是无限的
状态:指所拥有的所有状态
游戏开发中某些系统中存在有限种状态的切换变化时
我们可以使用有限状态机的设计思路来进行逻辑编写
举例说明:
假设我们人会做很多个动作,也就是有很多种状态
这些状态包括 站立、走路、跑步、攻击、防守、睡觉等等
我们每天都会在这些状态中切换,而且这些状态虽然多但是是有限的
当达到某种条件时,我们就会在这些状态中进行切换
而且这种切换时随时可能发生的
有限状态机对于我们的意义
游戏开发中有很多功能系统都是有限状态机
最典型的状态机系统
动作系统 —— 当满足某个条件切换一个动作,且动作是有限的
AI(人工智能)系统 —— 当满足某个条件切换一个状态,且状态是有限的
所以状态机是游戏开发中一个必不可少的概念
最简单的状态机实现
最简单的状态机实现代码就是基于switch的实现
假设我们只有一个值来控制当前玩家的状态
123456 ...
U3L13-1——代码控制动画(老动画系统)
U3L13-1——代码控制动画(老动画系统)
老动画系统
Unity中有两套动画系统
新:Mecanim动画系统——主要用Animator组件控制动画
老:Animation动画系统——主要用Animation组件控制动画 (Unity4之前的版本可能会用到)
目前我们为对象在Animation窗口创建的动画都会被新动画系统支配
有特殊需求或者针对一些简易动画,才会使用老动画系统
老动画系统主要用于处理老版本项目和简单的一些自制动画
新项目都不建议大家使用了
关键组件:Animation
本章代码关键字
12345678Animation //老动画系统类animation.Play() //播放动画animation.CrossFade() //过渡播放动画animation.PlayQueued() //队列播放动画,如果前一个动画没有播放完先等前一个动画播放完再播放animation.CrossFadeQueued() //过渡队列播放动画,在队列播放 ...
U3L13-2——创建编辑Animation动画
U3L13-2——创建编辑Animation动画
创建动画
在场景中选中想要创建动画的对象
在Animation窗口中点击创建
选择动画文件将要保存到的位置
保存动画文件时,Unity会帮助我们完成以下操作
创建一个 Animator Controller(动画控制器 或称之为 动画状态机)资源(新动画系统)
将新创建的动画文件添加到Animator Controller中
为动画对象添加Animator组件
为Animator组件关联创建的Animator Controller文件
窗口变化
左侧面板
多出一个可以选择当前动画的下拉列表
可以在这里创建新动画和切换动画
多出一个可以添加变化属性的按钮
在这里你可以任意添加你想要在动画中变化的脚本变量
要显示这个,需要先在Animation面板右上角三点菜单选择Show Sample Rate
该数值决定该动画为一秒多少帧
右侧面板
时间轴可以拖动
注意:时间轴上的单位为n秒n帧 一格代表一帧(并不是秒)
关键帧的右键菜单(主要用于曲线模式)
Add Key:添加关键帧
...
U3L14——Animator动画状态机
U3L14——Animator动画状态机
有限状态机
有限状态机
Animator Controller动画控制器(状态机)
Animator Controller动画控制器(状态机)
代码控制动画状态机切换
代码控制动画状态机切换
U3L13——Animation动画窗口
U3L13——Animation动画窗口
Animation窗口
Animation窗口 直译就是动画窗口
它主要用于在Unity内部创建和修改动画,所有在场景中的对象都可以通过Animation窗口为其制作动画
原理:
制作动画时:记录在固定时间点对象挂载的脚本的变量变化
播放动画时:将制作动画时记录的数据在固定时间点进行改变,产生动画效果
打开Animation动画窗口
Window——>Animation——>Animation
关键词说明
动画时间轴
每一个动画文件都有自己的一个生命周期,从动画开始到结束
我们可以在动画时间轴上编辑每一个动画生命周期中变化
动画中的帧
假设某个动画的帧率为60帧每秒,意味着该动画1秒钟最多会有60次改变机会
每一帧的间隔时间是 1s/60 ≈ 16.67毫秒
也就是说 我们最快可以每16.67毫秒改变一次对象状态
关键帧
动画在时间轴上的某一个时间节点上处于的状态
Animation窗口功能
从左至右:
预览模式(开关)
录制模式(开关)打开后预览模式默认开启
回到动画开头
上一关键帧(快捷键:键盘逗号)
播放动画(快捷 ...
U3L12-7——Tilemap代码控制相关
U3L12-7——Tilemap代码控制相关
本章关键字
123456789UnityEngine.Tilemaps //Tilemap相关所需的命名空间Tilemap //瓦片地图信息 可以通过它得到瓦片格子Grid //格子位置相关控制 可以通过它 进行坐标转换TileBase //瓦片资源对象基类tilemap.ClearAllTiles() //清空瓦片地图tilemap.SetTile(,) //设置某个格子位置的瓦片tilemap.SetTiles(,) //设置多个格子位置的多个瓦片tilemap.SwapTile(,) //批量替换某种瓦片grid.WorldToCell() //世界坐标转换为格子坐标
获取Tilemap和TileBase和Grid
Tilemap组件:用于管理瓦片地图
瓦片地图信息 可以通过它得到瓦片格子
TileBase组件:瓦片资源对象基类
瓦片资源基 ...
U3L12-5——官方拓展包—新增瓦片类型
U3L12-5——官方拓展包—新增瓦片类型
新增瓦片类型
请注意!
本次笔记内容对应的课 讲解的是2019版unity的2D extras
而笔者在本次学习中 使用的是2021版unity的2D Tilemap extras
前者已停止更新,后者在Unity2021版2D项目上会自动安装,同时,两者并不兼容
但是,2D Tilemap extras并没有包含所有的2D extras的内容,相比2D extras缺少了部分瓦片类型和笔刷类型
基于以上原因,接下来的笔记优先基于2021版上预装的2D Tilemap extras,而对于相比2D extras缺失或者不同的部分会另外标记和记录
左图是2021版unity的2D Tilemap extras的新增瓦片类型;右图为2019版unity的2D extras的新增瓦片类型
规则瓦片 RuleTile
定义不同方向是否存在连接图片的规则,让我们更加快捷的进行地图编辑
Default Sprite:默认图片
Default GameObject :默认游戏对象
Default Collider:默认碰撞器规则 ...
U3L12-6——官方拓展包—新增笔刷类型
U3L12-6——官方拓展包—新增笔刷类型
新增笔刷类型
请注意!
本次笔记内容对应的课 讲解的是2019版unity的2D extras
而笔者在本次学习中 使用的是2021版unity的2D Tilemap extras
前者已停止更新,后者在Unity2021版2D项目上会自动安装,同时,两者并不兼容
但是,2D Tilemap extras并没有包含所有的2D extras的内容,相比2D extras缺少了部分瓦片类型和笔刷类型
基于以上原因,接下来的笔记优先基于2021版上预装的2D Tilemap extras,而对于相比2D extras缺失或者不同的部分会另外标记和记录
左图是2021版unity的2D Tilemap extras的新增笔刷类型;右图为2019版unity的2D extras的新增笔刷类型
新建自定义笔刷(2D Tilemap extras没有这个功能)
预设体笔刷——用于快捷刷出想要创建的精灵
预设体随机笔刷——用于快捷随机刷出想要创建的精灵
随机笔刷——可以指定瓦片进行关联,随机刷出对应瓦片
拓展笔刷
Coordinate Br ...
U3L12-4——官方拓展包导入
U3L12-4——官方拓展包导入
下载官方拓展包
下载地址:https://github.com/Unity-Technologies/2d-extras
注意!该拓展包的github页面已经停止了更新!
一般情况下,2021版可以直接使用Package Manager(包管理器)的2D Tilemap Extras,里面已经包含了一些2D Extras的内容
如果在 存在2D Tilemap Extras 的情况下,再去导入2D Extras,会报错,出现文件重复的问题!
导入官方拓展包
解压后直接拖入到Assets文件夹中即可
官方拓展包有什么用
拓展包为Tilemap添加新的瓦片类型和笔刷类型 帮助我们更加方便的编辑2D场景