【Godot4自学手册】第四节动画状态机-AnimationTree

news2024/12/27 15:04:41

各位同学大家好!今天继续学习Godot4,本节将要学习AnimationTree,来实现控制主人公的动画。

一、AnimationPlay节点介绍

Godot引擎通过AnimationPlay节点实现了最灵活的动画系统,它几乎可以给godot中的任意节点的任意属性添加动画,而且它还有专用的变换函数,bezier曲线,函数回调,声音控制和子动画轨道(sub-animation track)等的特性。AnimationTree本身不包含动画,它使用AnimationPlayer节点包含的动画,你可以使用AnimationPlay制作动画,或者从其他第三方软件中导入动画,然后使用AnimationTree节点控制动画的播放,动画的播放是通过控制AnimationTree属性的Playback实现的。
是不是看的云里雾里的,这是说的啥也?别急,我慢一点一点来,一会你就知道我说的是啥了。

二、完善一下AnimatedSprite2D节点

这是一个2D游戏,人物有4个方向的待机动画,4个方向的行走动画,4个方向的攻击动画。所以我们在AnimatedSprite2D节点中完成这12个动画。每个动画的时限过程已在第三节设置主人公的动画中的“通过AnimatedSprite2D节点实现动画效果”学习过。动画名称和对应的图片关系,设置情况如下表:

动画名称对应图片帧数帧速率是否循环是否加载后自动播放说明
Idle_Right第2行第1张5右侧待机动画
Idle_Left第4行第3张5左侧待机动画
Idle_Top第3行第2张5向上待机动画
Idle_Down第5行第4张5向下待机动画
Walk_Right整个第2行和第3行第1张10向右行走动画
Walk_Left第4行第3—5张,第5行第1—3张10向左行走动画
Walk_Top第3行第2—5张,第4行第1—2张10向上行走动画
Walk_Down第5行第4—5张,第6行第1—4张10向下行走动画
Sword_Right第7行第4—5张,第8行第1—2张9向右攻击动画
Sword_Left第9行第2—5张9向左攻击动画
Sword_Top第8行第3—5张,第9行第1张9向上攻击动画
Sword_Down第6行第5张,第7行第1—3张9向下攻击动画

最终效果如下:
请添加图片描述

三、添加AnimationPlay节点

在player场景的player节点下添加AnimationPlay节点,然后下载一个Godot4插件,这个插件功能是将AnimatedSprite2D节点下的所有动画导入到AnimationPlay节点下。
第一步单击编辑器中部的AssetLib按钮,在搜索框中输入anima,然后在列表中找到AnimatedSpritetoAnimationPlayerConvertor4.0。
请添加图片描述

单击AnimatedSpritetoAnimationPlayerConvertor4.0弹出如下对话框:
请添加图片描述

单击下载按钮,就开始进行下载了。
如果你的网络有问题,会出现如下对话框,这样我们还有另外一种办法。
访问Godot Engine - Free and open source 2D and 3D game engine官网,进入顶部Assets栏目,在打开的页面,进行搜索,然后单击AnimatedSpritetoAnimationPlayerConvertor4.0近日详细页面点击Download进行下载。
请添加图片描述

如果你还不能下载,我会在本文的最后附上文件下载地址,请从这下载。
下载完成后是一个zip的压缩包,把它解压,打开文件夹向下一层找到addons文件夹把它考到项目的根目录下,此时项目文件系统显示如下:
请添加图片描述

然后我们在插件选项请添加图片描述
卡内单击插件,弹出对话框中将启用打上勾,然后关闭。

在Player场景player节点下单击其它节点,然后在单击AnimationPlay节点,这样会在AnimationPlay节点检查器下方出现一个导入按钮,在点击导入按钮之前,动画控制面板内容如下:
请添加图片描述

单击导入按钮后,动画控制面板内容如下:
请添加图片描述

这样就把AnimatedSprite2D节点下所有的动画导入到了AnimationPlay节点里面。

四、添加AnimationTree节点

在player场景的player节点下添加AnimationTree节点,当前AnimationTree的默认属性是下面这个样子,双击黄色谈话会提示节点配置警告信息。
请添加图片描述

1、Tree Root属性配置

在节点检测器中,我们首先对AnimationTree下的Tree Root属性进行配置,这里面共有6个节点供我们选择,我们选择AnimationNodeStateMachine节点,如下:
请添加图片描述

6个节点简单学习一下:
AnimationRootNode:动画树节点的基本资源。通常,它不会直接使用,但您可以使用自定义混合公式创建自定义混合公式。
AnimationNodeBlendTree: 包含多个混合类型节点,如max,blender2,blender3,onshot等等,这个是最常用的Tree Root根节点。
AnimationNodeBlenderSpace1D: 1D空间混合
AnimationNodeBlenderSpace2d: 在2D空间中旋转根节点,通过控制Blender Postion属性在2D空间中的位置混合多个动画
AnimationNodeStateMachine: 在图中包含多个根节点类型作为它的子节点,每一个根节点是一个状态,并且提供了很多用于改变状态的函数 。这是我们今天要用的。
AnimationNodeAnimation: 从列表中选择一个动画播放,这是最简单的根节点类型,通常不直接作为Tree Root根节点使用。
通过对AnimationTree的学习,该节点不但需要配置AnimationNode属性,还需要配置一个Anim Player属性。

2.Anim Player属性配置

在节点检测器中,我们首先对AnimationTree下的Anim Player属性单击指定,在对话框中选择player节点下的AnimationPlayer节点。
请添加图片描述

3.配置动画树

上述属性配置好后,就可以在中间底部的动画树面板进行配置了。首先在快捷工具栏中选择创建节点图标,然后在下发的编辑区内单击,会出现下图的菜单,选择BlendSpace2D,这样一个节点就建立了。
请添加图片描述
我们连续点击3下建立3个节点。在快捷工具栏中单击选择移动节点工具,就是箭头的那个工具,然后单击编辑区内的节点,重新命名为:Idle,Walk,Sword。先再单击Idle前面的三角形,这个目的是让Idle处于运行状态,修改起来立马看见修改的结果;然后单击后面的铅笔,进入修改状态。
请添加图片描述

进入详细设置页面,第一步我们选择创建结点快捷按键,然后在(-1,0)单击选择添加Idle_left动画;在(1,0)单击选择添加Idle_Right动画;在(0,1)单击选择添加Idle_Down动画;在(0,-1)单击选择添加Idle_Top动画。
请添加图片描述

将混合选择非线性的,最后结果如下:
请添加图片描述

设置完成后,在空间下设置位置混合状态快捷按钮,在编辑器状态下拖动,能试试看看预览状态,展示效果如下:
请添加图片描述

这样Idle动画树已经设置完成了,同理设置Walk和Sword。
这样,我们这节就到这了,在这一节中,学习了在AnimatedSprite2D节点中添加12个动画,并把动画导入到了AnimationTree节点下;然后在AnimationTree节点下完成Idle、Walk、Sword动画树。

最后我把本节用到的插件、素材和项目的源代码全部上传,需要的同学点击下载。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1408864.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

携程基于Jira Cloud的敏捷项目管理实践

好的工具可以满足团队在各个成长阶段的管理诉求 实践一:对齐目标/团队OKR/多团队协作战略项目 实践二:以产品为中心的协作框架 实践三:交付团队管理 实践四:和海外子公司对齐,协作

数灵通丨可以实现抖音引流微信小程序了

抖音作为一款火爆的短视频社交平台,吸引了数亿用户的关注和喜爱。除了观看和制作视频外,抖音还提供了跳转到小程序的功能,让用户可以享受更多功能和乐趣。那么,如何在抖音中跳转到小程序呢?以下是详细解答:…

Android 基础技术——View 的宽高

笔者希望做一个系列,整理 Android 基础技术,本章是关于 View 的宽高 Activity Resume 的时候设置或者获取view的宽高是否有效? 回答:不确定。 首次 onResume 无效,二次 onResume 就有效了。 回顾「Android 基础技术——addView 流…

[Python] glob内置模块介绍和使用场景(案例)

Unix glob是一种用于匹配文件路径的模式,它可以帮助我们快速地找到符合特定规则的文件。在本文中,我们将介绍glob的基本概念、使用方法以及一些实际应用案例。 glob介绍 Glob(Global Match)是Unix和类Unix系统中的一种文件名扩展功能,它可以…

eNSP学习——理解交换机Hybird接口的应用

目录 原理概述 实验内容 实验目的 实验步骤 实验拓扑 实验编址 实验步骤 基本配置(此处仅以PC1为例) 实现组内通信、组间间隔 实现网络管理员对所有网络的访问 原理概述 Hybrid接口既可以连接普通终端的接入链路又可以连接交换机间的干道…

嵌入式面试提问

嵌入式面试问题 1.讲一下STM32的时钟系统 现总结下:首先是时钟源输入时钟信号到单片机,然后单片机对输入的时钟信号进行倍频和分频处理,再将处理后的时钟信号输出至系统,外设或外部接口。   先看这张图,最外面的线上…

[docker] Docker资源管理

一、docker资源控制 Docker通过Cgroup 来控制容器使用的资源配额,包括CPU、内存、磁盘三大方面,基本覆盖了常见的资源配额和使用量控制。Caroup 是ControlGroups的缩写,是Linux 内核提供的一种可以限制、记录、隔离进程组所使用的物理资源(如…

[linux] 域名解析失败案例定位 [Errno -2] Name or service not known

首先发现代码里这段运行报错: socket.gethostbyname_ex(host_name) Traceback (most recent call last): File “”, line 1, in socket.gaierror: [Errno -2] Name or service not known import socket host_name socket.gethostname() print(socket.gethostby…

CSS3基础知识总结

目录 一、CSS3 边框 1.border-radius:圆角边框 2.box-shadow:添加阴影 3.border-image:图片边框 二、CSS3 渐变 1.线性渐变(Linear Gradients) a.由上到下(默认) b.从左到右 c.对角 d.使用角度 2.径向渐变(…

js计算皮尔逊相关系数

代码如下; let XGX {correlationCoefficient(pA, pB) {let covXY -pA * pBlet varX pA * (1-pA) let varY (1-pB)* pBlet res covXY / (Math.sqrt(varX*varY, 2))return res},correlation(x,y){x[0.3,50.2,99.5,199.3,299,398];y[0.1,50,99.9,200,300,400];// 计算均值con…

深入理解HarmonyOS UIAbility:生命周期、WindowStage与启动模式探析

UIAbility组件概述 UIAbility组件是HarmonyOS中一种包含UI界面的应用组件,主要用于与用户进行交互。每个UIAbility组件实例对应最近任务列表中的一个任务,可以包含多个页面来实现不同功能模块。 声明配置 为了使用UIAbility,首先需要在mod…

Nginx 配置解析:从基础到高级应用指南

Nginx 配置解析:从基础到高级应用指南 Nginx 配置解析:从基础到高级应用指南1. 安装和基本配置安装 Nginx基本配置 2. 虚拟主机配置3. 反向代理配置4. 负载均衡配置5. SSL 配置6. 高级配置选项结语 Nginx 配置解析:从基础到高级应用指南 Ngi…

Scapy编程指南(基础概念)

Scapy编程指南(基础概念) Scapy是什么 Scapy是Python中一个非常强大的库,它专门用于处理、发送和捕获网络协议中的数据包,它允许开发人员通过Python代码构建、解析和发送自定义网络协议的数据包。Scapy提供了一种直观、灵活的方…

Java代码审计原生反序列化CC链跟踪分析

希望和各位大佬一起学习,如果文章内容有错请多多指正,谢谢! 个人博客链接:CH4SER的个人BLOG – Welcome To Ch4sers Blog 在前一篇文章我分析了Commons Collections1链​​​​​​​,其中跟链的顺序是&#xff1a…

【jetson笔记】vscode远程调试

vscode安装插件 vscode安装远程插件Remote-SSH 安装完毕点击左侧远程资源管理器 打开SSH配置文件 添加如下内容,Hostname为jetson IP,User为登录用户名需替换为自己的 Host aliasHostName 192.168.219.57User jetson配置好点击连接,控制台输…

阿里云推出第八代企业级实例 g8i:AI 推理性能最高提升 7 倍、可支持 72B 大语言模型

云布道师 1 月 11 日,全球领先的云计算厂商阿里云宣布推出第八代企业级通用计算实例 ECS g8i,这也是国内首款搭载第五代英特尔至强可扩展处理器(代号 EMR)的云计算产品。依托阿里云自研的「飞天CIPU」架构体系,ECS g8…

【每日一题】3.LeetCode——相交链表

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更新的动力❤️ 🙏小杨水平有限,欢迎各位大佬指点&…

Linux-共享内存

文章目录 前言一、system V共享内存申请共享内存挂载共享内存删除共享内存挂载删除共享内存 二、示例代码三.运行效果 前言 在这之前我们已经学习了两种进程间通信方式:匿名管道和命名管道。 从我们之前的学习已经知道,想让多个进程间进行通信就需要让他…

重构改善既有代码的设计-学习(四):简化条件逻辑

1、分解条件表达式(Decompose Conditional) 可以将大块代码分解为多个独立的函数,根据每个小块代码的用途,为分解而得的新函数命名。对于条件逻辑,将每个分支条件分解成新函数还可以带来更多好处:可以突出条…

业余爱好-生物信息学/生物化学/物理/统计学/政治/数学/概率论/AI/AGI/区块链

生物信息学 高等数学—元素和极限-实数的定义高等数学—元素和极限-实数的元素个数高等数学—元素和极限-自然数个数少于实数个数高等数学—元素和极限-无穷大之比较高等数学—元素和极限-级数的收敛高等数学—元素和极限-极限的定义数学分析与概率论人工智能AI数学基础——全套…