当前位置: 首页 > news >正文

【Unity基础】7.动画状态参数

  【Unity基础】7.动画状态参数

        大家好,我是Lampard~~
        欢迎来到Unity基础系列博客,所学知识来自B站阿发老师~感谢 

(一)创建动画状态

(1) 创建动画状态

    不好意思各位~最近工作比较忙,稍微耽误了这两周的博客。话不多说我们继续学习unity的动画状态机,现在我们是有一台原地转动螺旋桨的飞机模型:

    接下来我们先创建两个动画状态,一个命名为Move代表飞机向前飞行,另一个命名为Fly代表飞机向上飞行:

(2) 给动画状态添加动作Motion

    我们需要给动画状态增加两个简单的motion,我们按照之前学习的内容创建两个简单动画:控制模型飞机的position属性随着时间进行变化即可       

    我们把Fly状态和Move状态之间加一个联系,然后点击播放看看现在的效果,飞机执行完FlyAni后进入了Move的状态向前进:

(3)ExitTime

    那为什么在播放完Fly状态后会进入Move状态呢?是因为有Fly有一个指向Move联系的原因吗?

    不完全是,存在联系代表着Fly状态可以过度到Move状态,但是不代表可以直接就进入到该状态。起了这个效果主要是我们状态里面的Exittime属性起了作用

    我们取消勾选飞机播放完Fly状态后就不会进入Move状态

    调整Exit time的数值则可以控制多少秒(或者圈)后才进入到下一状态,比如调个3看看

(二)动画状态参数

(1)创建动画状态参数

    在动画编辑器节目面有Layer和Parameters两个按钮,点击 Parameters就可以给动画状态创建控制参数,有Int,float,bool等我们创建一个布尔类型的来控制其处在Fly还是Move状态

    我们想要通过控制这个参数的状态,来控制模型从Fly状态到Move状态以及Move状态到Fly状态的过度,那么下一步我们自然需要把这个参数关联到这两个状态的transtion之间去

(2)关联状态参数  

选中它们的联系,右下方有一个condition的属性,点击加号就可以找到我们刚才创建的参数了

    我们把IsFly字段设置为false时候的时候状态将会从Fly过度到Move,同样我们给Move到Fly的联系也加上这个参数,此时就需要把它设置为true代表是从Move过度到Fly 

(3)调整参数

      在做好上面的工作后我们就可以看看效果了

      当我们IsFly处在未选中时,模型会执行完Move状态,当我们在编译器中把IsFly调整为true时就会过度到Fly状态

(三)状态机API

(1)获取状态机组件

    我们可以在编辑器中调试效果,但是如果需要在代码里控制这个动画状态参数的变化该怎么办呢?很简单,我们只需要先获取这个动画状态机组件,然后再通过组件对象访问IsFly参数并调整就是了

Animator ani = GetComponent<Animator>();

(2)设置IsFly参数

    在获取到组件之后,我们可以尝试调整其参数,状态机提供了一个SetBool的接口给我们,我们可以用它调整IsFly参数

    比如代码这样写就可以让我们在按着F键的时候播放Fly状态动画,松手这回到Move

     看看效果~(如果没生效看看脚本挂到模型上去没有,还有就是有没有选中Game窗口):

    好啦今天先到这里,下周进行更复杂一些的动画编辑操作~
    点赞,关注!!!

http://www.lryc.cn/news/219501.html

相关文章:

  • C语言映射表在串口数据解析中的应用
  • 叁[3],感兴趣区域ROI
  • 文件数据交换格式说明
  • 2023NOIP A层联测24 总结
  • vue3 项目如何配置测试环境打包
  • 【CSS】样式的计算过程
  • 【ArcGIS微课1000例】0076:KMZ转换KML的方法
  • Python基础入门例程46-NP46 菜品的价格(条件语句)
  • Docker数据管理、网络与Cgroup资源限制
  • ubuntu strings | grep使用说明
  • <Vue>使用依赖注入的方式共享数据
  • 从0到1:腾讯云服务器使用教程
  • VScode + opencv + c++ + win配置教程
  • 机器学习---SVM目标函数求解,SMO算法
  • 044_第三代软件开发-保存PDF
  • 2023红帽论坛:构建开放AI生态,助力企业数字革新之路
  • 阿里云国际站和华为云国际站之间该如何选择?
  • JavaScript设计模式之责任链模式
  • 云安全—kubelet攻击面
  • leetcode经典面试150题---5.多数元素
  • Vue ElementUI el-tooltip 全局样式修改
  • MATLAB_5MW风电永磁直驱发电机-1200V直流并网MATLAB仿真模型
  • 11.4商业伦理(全)
  • 【漏洞复现】S2-045 Remote Code Execution(CVE-2017-5638)
  • Linux----------------Shell重定向输入输出
  • apachesolr中简单使用
  • C++多线程编程:其一、thread类概述
  • C++11 initializer_list 轻量级初始化列表的使用场景(让自定义类可以用初始化列表的形式来实例化对象)
  • 请求地址‘/operlog‘,发生未知异常
  • Makefile 保姆级使用教程