U3L18-8——Statemachinebehaviour 状态机行为脚本
U3L18-8——Statemachinebehaviour 状态机行为脚本 状态机行为脚本 状态机行为脚本时一类特殊的脚本,继承指定的基类,它主要用于关联到状态机中的状态矩形上 我们可以按照一定规则编写脚本,当进入、退出、保持在某一个特定状态时我们可以进行一些逻辑处理 简单解释就是为Animator Controller状态机窗口中的某一个状态添加一个脚本 利用这个脚本我们可以做一些特殊功能 比如 进入或退出某一状态时播放声音 仅在某些状态下检测一些逻辑,比如是否接触地面等等 激活和控制某些状态相关的特效 本章代码关键字 12345678910StateMachineBehaviour //如果想要使一个脚本作为状态机脚本,则必须要继承这个基类OnStateEnter() { } //进入状态时,第一个Update中调用OnStateExit() { } //退出状态时,最后一个Update中调用OnStateIK() { } ...
U3L18-7——动作目标匹配
U3L18-7——动作目标匹配 动作目标匹配 动画目标匹配主要指的是 当游戏中角色要以某种动作移动,该动作播放完毕后,人物的手或者脚必须落在某一个地方 比如:角色需要跳过踏脚石或者跳跃并抓住房梁 那么这时我们就需要动作目标匹配来达到想要的效果 本章代码关键字 123animator.MatchTarget() //动画目标匹配的方法,使某个动画能让该对象的某个点在动画播放期间精确的移动到某个目标点上AvatarTarget //骨骼目标的枚举,在MatchTarget()方法里用来表示骨骼上的哪个地方的位置用来匹配目标位置MatchTargetWeightMask() //结构体,用来记录XYZ方向以及角度变化的权重 如何实现动画目标匹配 Unity中的Animator提供了对应的函数来完成该功能,使用步骤是 找到动作关键点位置信息(比如起跳点,落地点,简单理解就是真正可能产生位移的动画表现部分) 将关键信息传入MatchTargetAPI中 MatchTarget 动画目标匹配的方法 **注意!调用匹配动画的时机有一些限制 ——>...
U3L18-6——动画IK控制
U3L18-6——动画IK控制 在2D骨骼动画里已经讲过一些关于IK的内容 ——> U3L16-1-d——2D Animation 反向动力学IK IK 在骨骼动画中,构建骨骼的方法被称为正向动力学 它的表现形式是,子骨骼(关节)的位置根据父骨骼(关节)的旋转而改变 用我们人体举例子 当我们抬起手臂时,是肩部关节带动的整个手臂的运动,用父子骨骼理解的话就是父带动了子 而IK全称是Inverse Kinematics,翻译过来的意思就是反向动力学的意思 它和正向动力学恰恰相反 它的表现形式是,子骨骼(关节)末端的位置改变会带动自己以及自己的父骨骼(关节)旋转 用我们人体举例子 当我们拿起一个杯子的时候是用手掌去拿,以杯子为参照物,我们移动杯子的位置,手臂会随着杯子一起移动 用父子骨骼理解的话就是子带动了父 本章代码关键字 123456789101112private void OnAnimatorIK(int layerIndex) { } ...
U3L18-5——动画子状态机
U3L18-5——动画子状态机 子状态机 子状态机顾名思义就是在状态机里还有一个状态机 它的主要作用就是某一个状态时由多个动作状态组合而成的复杂状态 比如某一个技能它是由3段动作组合而成的,蹲下,开火,站起 当我们释放这个技能时会连续播放这3个动作 那么我们完全可以把他们放到一个子状态机中 创建子状态机 在Animator Controller窗口中 右键->Create Sub-State Machine 图标为: 编辑子状态机 注意:子状态机和外部状态的相互连接方式****直接在外部将子状态机和某个状态连接一般是无效且多余的(会显示为灰色) 子状态机连接到外部时,有两种选项: 一个是连接到某个状态(上一层的某个状态) 一个是连接到状态机(层级) 如果是连接到某一层,则直接从该层的默认动画开始播放, 而与在外部为该子状态机连接到的哪个状态无关。 如果是连接到某个状态,在外部该子状态机会自动和那个状态连线
U3L18-4——动画2D混合
U3L18-4——动画2D混合 1D混合和2D混合 1D混合是用一个参数控制动画的混合,之所以叫1D是因为一个参数可以看做是1维线性的 2D混合你可以简单理解是用两个参数控制动画的混合,之所以叫2D是因为两个参数可以看做是2维平面xy轴的感觉 2D混合的种类 创建2D混合树还是和创建1D混合一致 但是需要在名字下方的修改混合类型(Blend Type) 英文混合模式名 中文混合模式名 作用和示例 2D Simple Directional 2D简单定向模式 运动表示不同方向时使用。比如向前、后、左、右走 2D Freeform Directional 2D自由形式定向模式 同上,运动表示不同方向时使用,但是可以在同一方向上有多个运动。比如向前跑和走 2D Freeform...
U3L18-3——动画1D混合
U3L18-3——动画1D混合 动画混合 游戏动画中常见的功能就是在两个或者多个相似运动之间进行混合 比如 根据角色的速度来混合行走和奔跑动画 根据角色的转向来混合向左或向右倾斜的动作 你可以理解是高级版的动画过渡 之前我们学习的动画过渡是处理两个不同类型动作之间切换的过渡效果 而动画混合是允许合并多个动画来使动画平滑混合 如何在状态机窗口创建动画混合状态 在Animator Controller窗口 右键->Create State->From New Blend Tree 1D混合的使用 1D混合就是通过一个参数来混合子运动 注意:往混合树里面加入动作时需要找到动画文件进行关联 参数相关 Parameter 参数,用于控制混合的参数,在参数列表中的参数 蓝色图像 可以在这里控制n个动画的阈值 Motion 关联的动画列表,可以用鼠标改变顺序 Threshold...
U3L18——3D动画相关
U3L18——3D动画相关 本章内容大量涉及Animator,具体内容看这里 ——> U3L14——Animator动画状态机 相关学习内容 3D动画的使用 动画分层和遮罩 动画1D混合 动画2D混合 动画子状态机 动画IK控制 动作目标匹配 Statemachinebehaviour 状态机行为脚本 状态机复用
U3L18-2——动画分层和遮罩
U3L18-2——动画分层和遮罩 本章代码关键字 12animator.GetLayerIndex() //通过层级名字获取索引animator.SetLayerWeight(,); ...
U3L18-1——3D动画的使用
U3L18-1——3D动画的使用 使用导入的3D动画 将模型拖入场景中 为模型对象添加Animator脚本 为其撞见Animator Controller动画控制器(状态机) 将想要使用的相关动作 拖入Animator Controller动画控制器(状态机)窗口 在Animator Controller动画控制器(状态机)窗口编辑动画关系(使用之前学习的状态机相关知识) 代码控制状态切换(和状态机的代码控制内容差不多) 注意点 Has Exit Time 是否启用 如果希望瞬间切换动画不需过多等待,取消该选项 Can Transition To self 是否启用 如果希望自己不要打断自己,取消该选项 状态设置相关参数 我们可以选中状态机窗口中的 某一个状态 为其设置相关参数 我们可以称之为动画状态设置 主要设置的是 当前状态的播放速度等等细节 Motion:分配给此状态的动画剪辑 Speed:动画的默认速度 Multiplier:控制速度的乘数 如果要使用需要勾选的Parameter选中配合的参数float类型 Motion...
U3L17-3-d——预览窗口
U3L17-3-d——预览窗口 动画预览 动画剪辑名称 IK:是否开启脚步反向动力学预览 2D:2D模式预览 箭头:是否显示轴心和质心辅助图标 切换预览操作的游戏对象,向预览窗口拖模型可以直接替换模型 播放暂停键 时间轴(可拖动预览) 播放速度 播放状态标记 秒、百分比、帧编号显示当前播放到的位置 可以为资源添加标签Tag AB包相关设置,AB包知识时会讲解 详见:UH1——AssetBundle