1、子状态机

子状态机顾名思义就是在状态机里还有一个状态机,它的主要作用就是某一个状态时由多个动作状态组合而成的复杂状态,比如某一个技能它是由3段动作组合而成的,蹲下,开火,站起,当我们释放这个技能时会连续播放这3个动作,那么我们完全可以把他们放到一个子状态机中

2、创建子状态机

在Animator Controller窗口中右键->Create Sub-State Machine

3、编辑子状态机

注意:子状态机和外部状态的相互连接方式

如果连接对象是子状态机,那么会转换到该状态机的默认状态

4、如何进行IK控制

1.在状态机的层级设置中 开启 IK 通道

2.继承MonoBehavior的类中

Unity定义了一个IK回调函数: OnAnimatorIK

我们可以在该函数中调用Unity提供的IK相关API来控制IK

3.Animator中的IK相关API

SetLookAtWeight

设置头部IK权重

SetLookAtPosition

设置头部IK看向位置

SetIKPositionWeight

设置IK位置权重

SetIKRotationWeight

设置IK旋转权重

SetIKPosition

设置IK对应的位置

SetIKRotation

设置IK对应的角度

AvatarIKGoal

枚举 四肢末端IK枚举

5、IK反向动力学控制对于我们的意义

IK在游戏开发中的应用

  • 拾取某一件物品

  • 持枪或持弓箭瞄准某一个对象

等等

6、关于OnAnimatorIK和OnAnimatorMove两个函数的理解

可以简单理解这两个函数是两个和动画相关的特殊生命周期函数

他们在Update之后LateUpdate之前调用

他们会在每帧的状态机和动画处理完后调用

OnAnimatorIK在OnAnimatorMove之前调用

OnAnimatorIK中主要处理 IK运动相关逻辑

OnAnimatorMove主要处理 动画移动以修改根运动的回调逻辑

他们存在的目的只是多了一个调用时机,当每帧的动画和状态机逻辑处理完后再调用

    private void OnAnimatorIK(int layerIndex){//头部IK相关//weight:LookAt全局权重0~1//bodyWeight:LookAt时身体的权重0~1//headWeight:LookAt时头部的权重0~1//eyesWeight:LookAt时眼镜的权重0~1//clampWeight:0表示角色运动时不受限制,1表示角色完全固定无法执行LookAt,0.5表示只能够移动范围的一半animator.SetLookAtWeight(1, 1f, 1f);animator.SetLookAtPosition(pos.position);//animator.SetIKPositionWeight(AvatarIKGoal.RightFoot, 1);animator.SetIKRotationWeight(AvatarIKGoal.RightFoot, 1);//animator.SetIKPosition(AvatarIKGoal.RightFoot, pos2.position);animator.SetIKRotation(AvatarIKGoal.RightFoot, pos2.rotation);}private void OnAnimatorMove(){}

子状态机 动画IK控制相关推荐

  1. Unity动画系统详解10:子状态机是什么?

    摘要:除了使用Layer还有没有更好的组织状态的方式呢?感觉一个Layer里面状态多的时候,还是很显得很乱. 洪流学堂,让你快人几步.你好,我是跟着大智学Unity的萌新,我叫小新,这是复(yu)习( ...

  2. 游戏编程入门(7):使用子画面动画移动对象

    在几乎所有游戏中,图形的核心都是动画.如果没有动画,那么就没有移动.如果没有移动,那么我们就只能玩棋类游戏和纸牌类游戏. 本文介绍了与游戏中的动画有关的概念,并介绍如何设计和开发一个通用的子画面类,允 ...

  3. XamarinAndroid组件教程设置自定义子元素动画(二)

    XamarinAndroid组件教程设置自定义子元素动画(二) (9)打开MainActivity.cs文件,为RecylerView的子元素设置添加和删除时的透明动画效果.代码如下: --using ...

  4. XamarinAndroid组件教程设置自定义子元素动画(一)

    XamarinAndroid组件教程设置自定义子元素动画(一) 如果在RecyclerViewAnimators.Animators中没有所需要的动画效果,就可以自定义一个.此时,需要让自定义的动画继 ...

  5. GSAP JS基础教程--动画的控制及事件

    好多天没有写无博文啦,今天无聊就再写一下! 今天要讲的是TweenLite的一些事件以及,TweenLite动画的控制,TweenMax类似,请自行参考官方文档:http://api.greensoc ...

  6. 【vue开发问题-解决方法】(八)利用axios拦截器实现elementUI中加载动画,控制加载区域

    [vue开发问题-解决方法](八)利用axios拦截器实现elementUI中加载动画,控制加载区域 参考文章: (1)[vue开发问题-解决方法](八)利用axios拦截器实现elementUI中加 ...

  7. maya表情blendshape_三维动画表情控制曲线与BlendShape的使用技巧

    张梦 摘 要:三维动画制作过程中经常会因为调好的表情不能和人物面部绑定在一起,单独使用Blend Shape来控制人物表情比较麻烦,给后期调动画带来不必要的麻烦,使用曲线控制角色表情绑定使得调动画变得 ...

  8. 基于状态机的简单控制

    基于状态机的简单控制: 公司是做一些简单的夹具的,大部分功能是几个按键加上几个电磁阀,再加一个显示屏就构成了一个简单的控制系统. 工控行业一般要求是比较稳定的,所以我需要在启动电磁阀之后去判断我的气缸 ...

  9. UNITY 非人型动画 IK

    UNITY  有自己的IK 但是要求骨络是人型骨络.  由于项目我自己做的模型比简单.未能配置成人型骨络.  我们可以使用免费开源的插件. FAST IK.  (UNITY 资源商店下载.) 用法: ...

最新文章

  1. 五、逆向工程--myeclipse快速开发Hibernate项目
  2. tableau实战系列(三十四)-教你如何在tableau中实现3D效果作图
  3. Python常用模块之configparser模块
  4. 云将与行业走向深度融合
  5. 在Spring@Component vs @Repository vs @Service
  6. 前端学习(3154):react-hello-react之脚手架文件介绍
  7. 函数调用关系图如何画_程序是如何在 CPU 中运行的(二)
  8. 排序:插入排序与希尔排序
  9. 初探 performance – 监控网页与程序性能
  10. 【火炉炼AI】深度学习008-Keras解决多分类问题
  11. IP地址详解,网络分段
  12. 计算机网络专业就业压力,网络工程专业就业形势研究
  13. uniapp中使用高德地图
  14. c程序设计语言 qsort,【程序设计基础_C语言】北理工的恶龙(附qsort范例)
  15. java实现zip压缩
  16. 软件工程管理集成了过程管理和项目管理
  17. 录播系统的服务器,录播系统服务器ip地址
  18. 只要工具不要“霸”——百度搜霸与百度工具栏
  19. 密码学安全性证明中的挑战者和攻击者
  20. 用AI脑补慢动作,30帧秒变120帧,轻松看清“松果糖豆五连鞭”动作细节

热门文章

  1. 解决联想小新电脑无法打开性能模式
  2. 用ps出夜间无人驾驶汽车的教程
  3. android 自定义view实现应用宝进度条下载效果
  4. 【论文阅读】YOLO-X:Exceeding YOLO Series in 2021
  5. Cheat Engine 保姆级教程(官方 1 - 12 关)
  6. except:异常的使用
  7. 解决win10 win11 蓝牙音箱可以连接无法播放声音/蓝牙音箱无法选择使用
  8. IDEA代码提示插件Codota-小白实操记录
  9. 【原创】C#搭建足球赛事资料库与预测平台(2) 数据库与XCode组件
  10. 2022考研二战失败找工作心路历程