【Godot4.3】基于状态切换的游戏元素概论


提示

本文的设想性质比较大,只是探讨一种设计思路。完全理论阶段,不可行就当是闹了个笑话O(∩_∩)O哈哈~但很符合我瞎搞的气质。


概述

一些游戏元素,其实是拥有多个状态的。比如一个宝箱,有打开和关闭两个状态。那么只需要设定两个状态的图片,就可以了。建筑物、生物、角色等等都可以用类似的结构存储多种状态,并进行切换。

状态可以是静帧,也可以是一段循环帧动画。

基于SpriteSheets或序列帧的帧动画搞的就是基于图片的状态划分这一套。但是你需要用AnimationPlayer这样的东西去创建多个状态的动画,再在脚本中进行切换。

通过从结构上就设计和管理游戏元素的多状态。我们可以更少的依赖AnimationPlayer等对游戏元素状态的划分,我们可以更直观和简单的切换元素的状态和外形。而且同样可以是基于多张图片的,也可以是基于精灵表的。这对新手使用更是没什么难度,而且很直观。

类型体系设计

在这里插入图片描述

简单状态用图片,复杂状态用图片序列。

设计具体的元素

  • StateBasedGameElement只是一个抽象的基于状态的游戏元素(以下简称SBGE),你可以基于其扩展具体的元素类型,比如建筑物、植物、动物、角色等等
# 创建一个具体的盒子元素
class Box extends StateBasedGameElement://...pass
  • 或者可以基于一个Node2D来专门创建SBGE。

状态切换的实现

对状态和序列帧的绘制使用CanvasItem绘图函数实现。

状态分析与面向游戏元素状态设计

通过从一开始就强调游戏元素的“状态”,游戏元素的设计就变成了状态分析的过程,绘制素材有了凭据。

而使用StateBasedGameElement的过程就是动态创建和管理游戏元素的状态,赋值各个状态的静帧或序列帧,然后在脚本中切换状态。

游戏元素的状态在节点内部切换,外部代码不再需要存储。所有状态并列在一个列表中,只通过索引进行切换。

在这里插入图片描述

将方向状态单独列出

可以划分为两方向、四方向、八方向、十六方向等。每个方向下又可以对应其他状态。所以状态从一个一维列表,变成了二维表。

还可以设定一个参数表示游戏元素目前的朝向,比如angle,通过-360°360°范围的角度来定义方向,根据角度自动判定和切换对应朝向的图片。

在这里插入图片描述

总结

纯设想和理论状态,有待实践验证。

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

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

相关文章

日志系统第五弹:同步日志器模块

日志系统第五弹:同步日志器模块 一、Logger类的设计1.功能2.如何打印日志3.设计 - - - 成员变量1.日志输出限制等级2.资源整合3.唯一标识4.互斥锁 4.设计 - - - 成员函数1.对外的日志打印接口2.抽象的日志实际落地接口3.其他接口 5.Logger类的框架 二、Logger类的实…

springboot地方特色美食分享系统-计算机毕业设计源码02383

摘要 本论文主要论述了如何使用SpringBoot技术开发一个地方特色美食分享系统,本系统将严格按照软件开发流程进行各个阶段的工作,采用B/S架构,面向对象编程思想进行项目开发。在引言中,作者将论述地方特色美食分享系统的当前背景以…

DHCP服务器搭建

1. DHCP工作原理 DHCP动态分配IP地址,客户端广播,服务端单播 2. DHCP服务器安装 2.1 安装DHCP # yum install -y dhcp-server 2.2 修改配置文件 # cd /etc/dhcp/ # ls # vi dhcpd.conf dhcpd.conf 主配置文件 第一行:全局dhcp服务器地…

240922-Ollama使用Embedding实现RAG

A. 最终效果 B. 参考代码 # [嵌入模型 Ollama 博客 - Ollama 中文](https://ollama.org.cn/blog/embedding-models)# 步骤1:生成嵌入import ollama import chromadbdocuments ["Llamas are members of the camelid family meaning theyre pretty closely re…

Golang | Leetcode Golang题解之第423题从英文中重建数字

题目: 题解: func originalDigits(s string) string {c : map[rune]int{}for _, ch : range s {c[ch]}cnt : [10]int{}cnt[0] c[z]cnt[2] c[w]cnt[4] c[u]cnt[6] c[x]cnt[8] c[g]cnt[3] c[h] - cnt[8]cnt[5] c[f] - cnt[4]cnt[7] c[s] - cnt[6]…

手势识别-Yolov5模型-自制数据集训练

1、源码下载: 大家可以直接在浏览器搜索yolov5即可找到官方链接,跳转进github进行下载: 这里对yolov5模型补充说明一下,它是存在较多版本的,具体信息可在master->tags中查看,大家根据需要下载。这些不同…

二叉树(链式存储)

文章目录 一、树的基础概念二、二叉树2.1 概念 性质2.2 二叉树的存储2.2 二叉树的基本操作手动创建一棵二叉树遍历:前、中、后、层序获取树中节点的个数获取叶子节点的个数获取第K层节点的个数获取二叉树的高度检测值为value的元素是否存在判断一棵树是不是完全二叉…

青岛特某电新能源有限公司-充电业务流程及数据交互规范-集控前置-精简版V1.0

1 范围 本流程规定了特某电充电终端所属的集控器与特某电云平台前置之间的充电相关业务流程,明确两端之间的请求和响应。 2 术语 云平台:云平台是提供包括充电设备接入,充电设备信息采集,充电设备管 理,充电设备运维…

Gin框架入门(1)--路由搭建与Json处理

背景知识 为什么要使用Go框架 如果不使用框架,在创建服务器和调用端口时会遇到各种各样“奇怪”的问题(就是出错的排查方向可能达到十几种),而且这些问题很难有相似性。同时作为适应于微服务的一门语言,代码的规范化…

构建高可用和高防御力的云服务架构第三部分:ECS集群(3/5)

ECS(Elastic Compute Service)是一种基础云计算服务,它提供了可伸缩的计算能力,允许用户在不需要预先购买硬件的情况下,根据需求快速扩展或缩减资源。ECS在云计算中的作用主要体现在提供虚拟化的服务器,用户…

食探秘:Spring Boot校园周边美食发现平台

第三章 系统设计 3.1 系统概要设计 本校园周边美食探索及分享平台选择B/S结构(Browser/Server,浏览器/服务器结构)和基于Web服务两种模式。适合在互联网上进行操作,只要用户能连网,任何时间、任何地点都可以进行系统的操作使用。系统工作原理图如图3-1所…

专业学习|动态规划(概念、模型特征、解题步骤及例题)

一、引言 (一)从斐波那契数列引入自底向上算法 (1)知识讲解 (2)matlap实现递归 (3)带有备忘录的遗传算法 (4)matlap实现带有备忘录的递归算法 “&#xff1…

linux入门介绍(通俗易懂,快速理解linux)

什么是操作系统? 操作系统(Operating System,简称OS)是管理和控制计算机硬件与软件资源的计算机程序,是配置在计算机硬件上的第一层软件,任何其它软件都必须在操作系统的支持下才能运行。 简单来说&#…

【LeetCode热题100】位运算

这篇博客先介绍了常见位运算操作,然后记录了关于位运算的几道题,包括判定字符是否唯一、丢失的数字、两整数之和、只出现一次的数字2、消失的两个数字。 在这一部分,我们不妨先来总结一下常见位运算操作: 1.基础位运算 >>…

fastadmin数据库创建说明文档

文章目录 数据库根据字段类型特殊字段以特殊字符结尾的规则注释说明 实例数字下拉列表日期时间文本框权重category_id --单选下拉框category_ids --多选下拉框deletetime --对应回收站status --对应tab常见问题 参考完结 数据库 这里提供的是数据库表字段规则在你创建表时使用…

Linux内核移植实战总结

直接参考【正点原子】I.MX6U嵌入式Linux驱动开发指南V1.81 本文仅作为个人笔记使用,方便进一步记录自己的实践总结。 前两章我们简单了解了一下 Linux 内核顶层 Makefile 和 Linux 内核的启动流程,本章我们就来学习一下如何将 NXP官方提供的 Linux 内核移…

17.1ksm关注指标讲解 pod和node状态的统计

本节重点介绍 : 主要的应用 看状态数个数 根据13105大盘模板看ksm指标 节点指标pod和容器指标资源对象按namespace分布指标其他资源指标 主要的应用 看状态,举例图片数个数,举例图片 根据大盘模板 查看指标 https://grafana.com/grafana/dashboard…

Tomcat靶场攻略

一.CVE-2017-12615 1.首页抓包,修改为 PUT 方式提交 ,将jsp木马写到数据包中 2.哥斯拉默认秘钥连接 二.后台弱⼝令部署war包 1.制作WAR包,上传 将JSP⽊⻢压缩为ZIP格式,然后修改后缀为war 2.文件上传成功后,默认会在网站根目录下生成和wa…

Apache 中间件漏洞

CVE-2021-41773 环境搭建 docker pull blueteamsteve/cve-2021-41773:no-cgid 访问172.16.1.4:8080 使⽤curl http://172.16.1.4:8080/cgi-bin/.%2e/.%2e/.%2e/.%2e/etc/passwd

面向对象设计其他原则例题

答案:D 知识点: 面向对象设计其他原则 重用发布等价原则 重用的粒度就是发布的粒度 共同封闭原则 包中的所有类对于同一性质的变化应该是共同封闭的。一个变化若对一个包产生影响,则将对该包里的所有类产生影响,而对于其他的…