godot游戏引擎_瓦片集和瓦片地图介绍
在 Godot 中,TileSet 和 TileMap 是用于处理瓦片地图的两个关键概念,它们的作用和用途有明显的区别。以下是两者的详细对比:
1. TileSet(瓦片集)
TileSet 是资源,定义瓦片的内容和属性。
特点:
-
用来定义瓦片资源:
TileSet是一个可复用的资源,存储了所有可用瓦片的图块(Tiles)、碰撞、动画、导航等信息。 -
设计阶段:
在TileSet中,你可以:- 指定每个瓦片的纹理(图像)。
- 定义瓦片的碰撞形状(例如,某些瓦片是否可碰撞)。
- 添加瓦片动画。
- 为瓦片分配导航网格。
-
复用性:
一个TileSet可以被多个TileMap节点复用。
用途:
TileSet 是瓦片的“工具箱”,它定义了所有瓦片的规则、外观和行为,但不会直接显示在场景中。
2. TileMap(瓦片地图)
TileMap 是场景中的节点,用于绘制瓦片地图。
特点:
-
用来绘制瓦片:
TileMap节点使用一个TileSet资源,通过在场景中放置瓦片,创建实际的地图。 -
场景中显示:
TileMap是在实际场景中放置瓦片地图的工具,可以直接在 2D 场景编辑器中绘制和编辑瓦片。 -
功能:
- 支持多种绘制工具,例如笔刷、矩形填充、桶工具等。
- 可以调整瓦片网格大小、对齐方式和偏移。
- 支持多图层(Godot 4.x 中为
TileMapLayer子节点)。
-
与游戏逻辑交互:
TileMap会根据TileSet的定义自动生成碰撞、导航和动画效果,在运行时直接与游戏角色交互。
用途:
TileMap 是瓦片的“画布”,它使用 TileSet 的内容,实际展示并管理瓦片地图。
对比总结:
| 属性 | TileSet | TileMap |
|---|---|---|
| 定义类型 | 资源:定义瓦片的内容和属性 | 节点:在场景中使用瓦片绘制地图 |
| 功能 | 定义瓦片外观、碰撞、导航和动画 | 绘制、显示和管理瓦片地图 |
| 是否可复用 | 可被多个 TileMap 使用 | 通常是一个具体的场景实例,不易复用 |
| 与场景的关系 | 不直接存在于场景中 | 存在于场景中,直接影响游戏表现 |
简单类比:
TileSet是画家的调色板,包含所有的颜色和画笔(瓦片的定义)。TileMap是画布,使用调色板中的颜色和画笔,绘制实际的作品(瓦片地图)。
在 Godot 中,选择绘制属性并为瓦片设置位掩码(Bitmask),主要是用于自动图块(Autotiling) 功能。这个功能可以让瓦片在绘制时,根据周围的瓦片自动调整形状,从而更高效地创建地图,比如铺设道路、草地或围墙。
以下是这个过程的详细解释:
1. 背景知识
-
位掩码(Bitmask):
位掩码用于定义瓦片与其周围瓦片的连接规则。通过设置位掩码,可以让 Godot 自动选择正确的瓦片形状,避免手动调整边界或连接点。 -
自动图块:
当你为一个瓦片设置了位掩码后,Godot 根据绘制时瓦片的相邻情况,自动决定要使用哪一个瓦片。
2. “在图中点击所有瓦片”的含义
这一步是为了选择瓦片图集中需要定义位掩码的瓦片。比如,你可能有一组瓦片用于地板,有不同的形状(拐角、边缘、中心等),你需要在 TileSet 编辑器中逐一选择它们。
步骤:
- 打开
TileSet资源。 - 在
TileSet编辑器中,点击瓦片图集中的瓦片,选中需要设置位掩码的所有瓦片。
3. “绘制位掩码”的含义
位掩码是通过在瓦片上手动绘制来定义的,表示该瓦片与哪些方向的相邻瓦片连接。
步骤:
-
进入
Bitmask模式:
在TileSet编辑器中,找到Bitmask工具并切换到它。 -
选择位掩码类型(重要!):
- 2x2 位掩码: 简单位掩码,每个瓦片有 4 个部分(左上、右上、左下、右下)。适合简单地形。
- 3x3 位掩码: 细致位掩码,每个瓦片有 9 个部分(上下左右四边、四角和中心)。适合复杂连接规则。
-
绘制位掩码:
- 在瓦片的编辑区域内,点击或拖动鼠标绘制连接部分。
- 每个“被填充”的部分表示该瓦片与该方向的瓦片相连。
完整流程示例:
假设你有一组瓦片用于绘制一片草地,草地边缘会根据周围是否有其他草地瓦片来改变形状。
-
选择瓦片:
- 打开
TileSet编辑器,选择草地相关的瓦片。
- 打开
-
设置位掩码:
- 进入
Bitmask模式,为每个瓦片手动绘制连接规则。 - 中间的瓦片(完全包围)设置所有方向为“连接”。
- 边缘瓦片只设置相应的一侧为“连接”。
- 拐角瓦片则仅设置两个相邻方向。
- 进入
-
保存并应用:
- 保存
TileSet设置。 - 在
TileMap中使用这个TileSet,绘制时草地瓦片会根据周围环境自动选择正确的瓦片形状。
- 保存
在为一个瓦片图集(TileSet)定义自动图块时,你需要:
- 选择所有要设置规则的瓦片。
- 切换到 Bitmask 模式,绘制每个瓦片的连接规则。
通过完成这些操作,绘制地图时会更加智能化和高效。
相关文章:
godot游戏引擎_瓦片集和瓦片地图介绍
在 Godot 中,TileSet 和 TileMap 是用于处理瓦片地图的两个关键概念,它们的作用和用途有明显的区别。以下是两者的详细对比: 1. TileSet(瓦片集) TileSet 是资源,定义瓦片的内容和属性。 特点:…...
7、深入剖析PyTorch nn.Module源码
文章目录 1. 重要类2. add_modules3. Apply(fn)4. register_buffer5. nn.Parametersister_parameters6. 后续测试 1. 重要类 nn.module --> 所有神经网络的父类,自定义神经网络需要继承此类,并且自定义__init__,forward函数即可: #!/usr…...
如何提升编程能力第二篇
如何提升编程能力2 1. 引言2. 掌握理论基础2.1 理解编程语言的核心2.2 数据结构与算法2.3 计算机基础与系统设计3.1 多写代码3.2 参与开源项目3.3 开发自己的项目 4. 提高代码质量4.1 代码风格与可读性4.2 测试驱动开发 1. 引言 编程是推动现代科技发展的核心技能,…...
问:SpringBoot核心配置文件都有啥,怎么配?
在SpringBoot的开发过程中,核心配置文件扮演着至关重要的角色。这些文件用于配置应用程序的各种属性和环境设置,使得开发者能够灵活地定制和管理应用程序的行为。本文将探讨SpringBoot的核心配置文件,包括它们的作用、区别,并通过…...
RHCSA作业
课后练习 将整个 /etc 目录下的文件全部打包并用 gzip 压缩成/back/etcback.tar.gz [rootlocalhost ~]# tar -czvf /back/etcback.tar.gz -C / etc 使当前用户永久生效的命令别名:写一个命令命为hello,实现的功能为每输入一次hello命令,就有hello&#…...
ESP32学习笔记_FreeRTOS(3)——SoftwareTimer
摘要(From AI): 这篇笔记全面介绍了 FreeRTOS 软件定时器的核心概念和使用方法,包括定时器的创建、管理、常用 API 和辅助函数,并通过示例代码演示了如何启动、重置和更改定时器的周期。它强调了软件定时器的灵活性、平台无关性以及与硬件定时器的对比 …...
文心一言与千帆大模型平台的区别:探索百度AI生态的双子星
随着人工智能技术的迅猛发展,越来越多的公司开始投入资源开发自己的AI解决方案。在中国,百度作为互联网巨头之一,不仅在搜索引擎领域占据重要位置,还在AI领域取得了显著成就。其中,“文心一言”和“千帆大模型平台”便…...
【c语言】文件操作详解 - 从打开到关闭
文章目录 1. 为什么使用文件?2. 什么是文件?3. 如何标识文件?4. 二进制文件和文本文件?5. 文件的打开和关闭5.1 流和标准流5.1.1 流5.1.2 标准流 5.2 文件指针5.3 文件的打开和关闭 6. 文件的读写顺序6.1 顺序读写函数6.2 对比一组…...
Flink Sink的使用
经过一系列Transformation转换操作后,最后一定要调用Sink操作,才会形成一个完整的DataFlow拓扑。只有调用了Sink操作,才会产生最终的计算结果,这些数据可以写入到的文件、输出到指定的网络端口、消息中间件、外部的文件系统或者是…...
pcl::PointCloud<PointType>::Ptr extractedCloud; 尖括号里的值表示什么含义?
在C中,pcl::PointCloud<PointType>::Ptr是一种智能指针,它是Point Cloud Library (PCL)中用于管理pcl::PointCloud对象的智能指针类型。这里的<pcl::PointCloud<PointType>::Ptr>尖括号里的值表示智能指针所指向的对象类型。 让我们分…...
《基于FPGA的便携式PWM方波信号发生器》论文分析(三)——数码管稳定显示与系统调试
一、论文概述 基于FPGA的便携式PWM方波信号发生器是一篇由任青颖、庹忠曜、黄洵桢、李智禺和张贤宇 等人发表的一篇期刊论文。该论文主要研究了一种新型的信号发生器,旨在解决传统PWM信号发生器在移动设备信号调控中存在的精准度低和便携性差的问题 。其基于现场可编…...
VsCode 插件推荐(个人常用)
VsCode 插件推荐(个人常用)...
路由策略与路由控制实验
AR1、AR2、AR3在互联接口、Loopback0接口上激活OSPF。AR3、AR4属于IS-IS Area 49.0001,这两者都是Level-1路由器,AR3、AR4的系统ID采用0000.0000.000x格式,其中x为设备编号 AR1上存在三个业务网段A、B、C(分别用Loopback1、2、3接…...
训练的decoder模型文本长度不一致,一般设置为多大合适,需要覆盖最长的文本长度么
在训练解码器模型时,文本长度不一致是常见的情况,需要根据任务的特性和数据集的长度分布来设置合理的最大长度 (max_length)。以下是一些指导原则,帮助你设置合适的最大长度: 1. 是否需要覆盖最长文本长度 覆盖最长文本长度: 如果任务对完整性要求很高(例如生成数学公式、…...
过滤条件包含 OR 谓词,如何进行查询优化——OceanBase SQL 优化实践
这篇博客涉及两个点,一个是 “OR Expansion 改写”,另一个是 “基于代价的改写”。 背景 在写SQL查询时,难以避免在过滤条件中使用 OR 谓词,但其往往会导致索引利用效率下降的问题 。本文将分享如何通过查询改写的2种方式进行优化…...
通过异步使用消息队列优化秒杀
通过异步使用消息队列优化秒杀 同步秒杀流程异步优化秒杀异步秒杀流程基于lua脚本保证Redis操作原子性代码实现阻塞队列的缺点 同步秒杀流程 public Result seckillVoucher(Long voucherId) throws InterruptedException {SeckillVoucher seckillVoucher iSeckillVoucherServi…...
AI产业告别“独奏”时代,“天翼云息壤杯”高校AI大赛奏响产学研“交响乐”
文 | 智能相对论 作者 | 陈泊丞 人工智能产业正在从“独奏”时代进入“大合奏”时代。 在早期的AI发展阶段,AI应用主要集中在少数几个领域,如语音识别、图像处理等。这些领域的研究和开发工作往往由少数几家公司或研究机构即可独立完成,犹…...
Hot100 - 字母异位词分组
Hot100 - 字母异位词分组 最佳思路:排序 时间复杂度: O(nmlogm),其中 n 为 strs 数组的长度,m 为每个字符串的长度。 代码: class Solution {public List<List<String>> groupAnagrams(String[] strs) …...
力扣hot100-->排序
排序 1. 56. 合并区间 中等 以数组 intervals 表示若干个区间的集合,其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间,并返回 一个不重叠的区间数组,该数组需恰好覆盖输入中的所有区间 。 示例 1: 输…...
【VRChat 全身动捕】VIVE 手柄改 tracker 定位器教程,低成本光学动捕解决方案(持续更新中2024.11.26)
更新 0.0.1(2024/11/26): 1.解决了内建蓝牙无法识别、“steamVR 蓝牙不可用” 的解决方案 2.解决了 tracker 虽然建立了连接但是在 steamVR 界面上看不到的问题 3.解决了 VIVE 基站1.0 无法被蓝牙识别 && 无法被 steamVR 搜索到 &…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
【Go】3、Go语言进阶与依赖管理
前言 本系列文章参考自稀土掘金上的 【字节内部课】公开课,做自我学习总结整理。 Go语言并发编程 Go语言原生支持并发编程,它的核心机制是 Goroutine 协程、Channel 通道,并基于CSP(Communicating Sequential Processes࿰…...
DBAPI如何优雅的获取单条数据
API如何优雅的获取单条数据 案例一 对于查询类API,查询的是单条数据,比如根据主键ID查询用户信息,sql如下: select id, name, age from user where id #{id}API默认返回的数据格式是多条的,如下: {&qu…...
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南
精益数据分析(97/126):邮件营销与用户参与度的关键指标优化指南 在数字化营销时代,邮件列表效度、用户参与度和网站性能等指标往往决定着创业公司的增长成败。今天,我们将深入解析邮件打开率、网站可用性、页面参与时…...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
基于Java Swing的电子通讯录设计与实现:附系统托盘功能代码详解
JAVASQL电子通讯录带系统托盘 一、系统概述 本电子通讯录系统采用Java Swing开发桌面应用,结合SQLite数据库实现联系人管理功能,并集成系统托盘功能提升用户体验。系统支持联系人的增删改查、分组管理、搜索过滤等功能,同时可以最小化到系统…...
智能AI电话机器人系统的识别能力现状与发展水平
一、引言 随着人工智能技术的飞速发展,AI电话机器人系统已经从简单的自动应答工具演变为具备复杂交互能力的智能助手。这类系统结合了语音识别、自然语言处理、情感计算和机器学习等多项前沿技术,在客户服务、营销推广、信息查询等领域发挥着越来越重要…...
华为OD机试-最短木板长度-二分法(A卷,100分)
此题是一个最大化最小值的典型例题, 因为搜索范围是有界的,上界最大木板长度补充的全部木料长度,下界最小木板长度; 即left0,right10^6; 我们可以设置一个候选值x(mid),将木板的长度全部都补充到x,如果成功…...
vue3 daterange正则踩坑
<el-form-item label"空置时间" prop"vacantTime"> <el-date-picker v-model"form.vacantTime" type"daterange" start-placeholder"开始日期" end-placeholder"结束日期" clearable :editable"fal…...
ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]
报错信息:libc.so.6: cannot open shared object file: No such file or directory: #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...
