【cocos creator 】生成六边形地图
想要生成一个六边形组成的地图
完整代码示例
以下是完整的代码示例,包含了注释来解释每一步:
cc.Class({extends: cc.Component,properties: {hexPrefab: {default: null,type: cc.Prefab},mapWidth: 10, // 网格的宽度(六边形的数量)mapHeight: 10, // 网格的高度(六边形的数量)hexSize: 64 // 六边形的大小(从中心到顶点的距离)},// onLoad is called once when the script is loadedonLoad() {this.generateHexMap();},generateHexMap() {// 计算六边形的宽度和高度let hexWidth = this.hexSize * Math.sqrt(3); // 计算六边形的宽度let hexHeight = this.hexSize * 1.5; // 计算六边形的高度// 遍历行和列生成六边形for (let y = 0; y < this.mapHeight; y++) {for (let x = 0; x < this.mapWidth; x++) {// 计算六边形的 x 和 y 坐标let xPos = x * hexWidth + (y % 2) * (hexWidth / 2);let yPos = y * (hexHeight * 0.75);// 实例化一个六边形预制体并设置其位置let hex = cc.instantiate(this.hexPrefab);hex.setPosition(cc.v2(xPos, yPos));this.node.addChild(hex); // 将六边形添加到当前节点}}}
});
this.hexSize 是一个属性,用来定义六边形的大小。在生成六边形网格时,它决定了每个六边形的边长或半径,从而影响整个网格的布局和尺寸。
在六边形网格中,hexSize 通常指的是六边形从中心到任意一个顶点的距离(也可以理解为半径)。这个值被用来计算六边形的宽度(从一边到另一边的水平距离)和高度(从一个顶点到对面顶点的垂直距离)。
具体示例说明
假设 this.hexSize = 64,那么:
-
六边形宽度(hexWidth):这是从六边形左边到右边的水平距离。对于正六边形,宽度公式为
hexWidth = hexSize * sqrt(3)。在代码中,这样计算:let hexWidth = this.hexSize * Math.sqrt(3);如果
this.hexSize = 64,则hexWidth = 64 * sqrt(3) ≈ 110.85。 -
六边形高度(hexHeight):这是从一个顶点到对面顶点的垂直距离。对于正六边形,高度公式为
hexHeight = hexSize * 2。在代码中,这样计算:let hexHeight = this.hexSize * 1.5;如果
this.hexSize = 64,则hexHeight = 64 * 1.5 = 96。
生成六边形网格的原理
每个六边形的位置由其在网格中的索引 (x, y) 决定。由于六边形的相邻行是错位排列的,需要根据行号 (y) 进行偏移:
-
水平偏移:
let xPos = x * hexWidth + (y % 2) * (hexWidth / 2);这段代码意思是:如果当前行号是奇数(
y % 2),则将六边形水平位置向右偏移半个六边形的宽度,以实现错位排列。 -
垂直偏移:
let yPos = y * (hexHeight * 0.75);这段代码意思是:每行的六边形向下移动
0.75个六边形高度,以实现垂直错位排列。0.75是为了保证六边形之间的紧密排列。

运行项目
- 在Cocos Creator中创建一个新的空节点,命名为
HexMap。 - 将
HexMap.js脚本添加到HexMap节点。 - 将你创建的六边形预制体(
HexPrefab)拖放到HexMap脚本的hexPrefab属性中。 - 运行项目,观察生成的六边形网格地图。
这样,你就能生成一个六边形网格地图,并可以根据需要调整六边形的大小和地图的宽高参数。
相关文章:
【cocos creator 】生成六边形地图
想要生成一个六边形组成的地图 完整代码示例 以下是完整的代码示例,包含了注释来解释每一步: cc.Class({extends: cc.Component,properties: {hexPrefab: {default: null,type: cc.Prefab},mapWidth: 10, // 网格的宽度(六边形的数量&am…...
TypeScript类型体操练习
历史小剧场 这个世界上,有两种人最痛苦,第一种是身居高位者,第二种是身居底层者,第一种人很少,第二种人很多。第一种人叫崇祯,第二种人叫百姓。 而最幸福的,就是中间那拨人,主要工作…...
leetcode231-Power of Two
题目 给你一个整数 n,请你判断该整数是否是 2 的幂次方。如果是,返回 true ;否则,返回 false 。 如果存在一个整数 x 使得 n 2x ,则认为 n 是 2 的幂次方。 示例 1: 输入:n 1 输出࿱…...
贪心算法简单介绍
贪心算法是一种在每一步选择中都采取当前状态下最优或最优近似的选择,以期望最终得到全局最优解的算法。贪心算法并不总能得到全局最优解,但在某些问题上,它可以得到全局最优解,并且比动态规划等其他方法更为简单和高效。 贪心算…...
眼底项目经验
眼底项目经验 可解释性不足问题眼底项目有多牛逼可解释性不足解法数据、算力、算法都免费送不仅预测当下,还能预测未来和慢病管理整合,形成一个实时健康检测生态 可解释性不足问题 今天下午和腾讯眼底项目人员讨论, 他们不准备做全身性的多疾种, 因为深…...
使用arco design实现动态列信息的表格
目录 1.说明 2.普通表格的实现 3.动态表格的实现 1.说明 在前端画面中,表格一般用来展示列表数据,并且可以实现分页,应用很广泛,关于表格的列信息,一般是固定的,也可以是变化的,根据后端传递…...
解决 fatal: Not a git repository (or any of the parent directories): .git 问题
解决方法:在命令行 输入 git init 然后回车就好了...
Spring 模拟管理Web应用程序
MVC:Model View Controller 1)controller:控制层(Servlet是运行服务器端,处理请求响应java语言编写技术) 2)service:业务层(事务,异常) 3…...
修改了vue3 <script setup>留言板
Лунная ночь <template><button class"edit_view_checkbox"><input type"checkbox" v-model"editshowInput" value"编辑" /></button><div class"editshowInput" v-if"editshowI…...
jQuery 常用API
一、jQuery 选择器 1、jQuery 基础选择器 原生JS获取元素方式很多,很杂,而且兼容性情况不一致,因此jQuery给我们做了封装,使获取元素统一标准 2、jQuery 层级选择器 3、隐式迭代 遍历内部 DOM 元素(伪数组形式存储&am…...
内网安全-隧道搭建穿透上线内网穿透-nps自定义上线内网渗透-Linux上线-cs上线Linux主机
目录 内网安全-隧道搭建&穿透上线内网穿透-nps-自定义-上线NPS工具介绍搭建过程 nps原理介绍MSF上线CS上线 内网渗透-Linux上线-cs上线Linux主机1.下载插件2.导入插件模块3.配置监听器4.服务端配置5.配置C2监听器并生成木马6.执行木马 内网安全-隧道搭建&穿透上线 内网…...
【AHK V2】设计模式之命令模式
目录 情景剧场什么是命令模式优缺点优点缺点 使用命令模式的步骤命令模式代码示例合理使用AI工具自动生成代码 情景剧场 我们来设想一个场景: 你进入一家餐馆,餐馆只有老板一个人(老板即厨师)。 “老板,一份小炒肉&am…...
2024年5月20日 (周二) 叶子游戏新闻
《边境之塔》登陆Steam 复古风恐怖生存冒险DascuMaru制作并发行,一款低像素3D复古风恐怖生存冒险新游《边境之塔(The Tower on the Borderland)》登陆Steam正式推出,限时九折优惠,本作暂不支持中文。 勇魅出击…...
【SQL学习进阶】从入门到高级应用(二)
文章目录 简单查询查一个字段查多个字段查所有字段查询时字段可参与数学运算查询时字段可起别名as关键字省略as关键字别名中有空格别名中有中文 🌈你好呀!我是 山顶风景独好 💝欢迎来到我的博客,很高兴能够在这里和您见面…...
FL Studio v21.2.3.4004中文破解版百度网盘下载
FL Studio v21.2.3.4004中文破解版是一款完整的软件音乐制作环境或数字音频工作站 (DAW)。代表了超过 18 年的创新发展,它在一个软件包中提供了您创作、编曲、录制、编辑、混音和掌握专业品质音乐所需的一切。FL Studio v21.2.3.4004中文破解版现在是世界上最受欢迎…...
从0开始写一个环境保护网站的第3天(JAVAWEB)
1.目标 实现首页的环境保护原因的查询,和底部友情连接部分 2.实现 2.1建立数据库表格(这里数据全是百度查询) 环境保护原因表: 友情连接表:(数据来源https://zhuanlan.zhihu.com/p/696243646࿰…...
Java中volatile关键字
保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说是立即可见的,volatile关键字会强制将修改的值立即写入主存。 1.volatile的可见性 一个典型的例子:永不停止的循环。 public class Forever…...
医院挂号就诊系统的设计与实现
前端使用Vue.js 后端使用SpiringBoot MyBatis 数据使用MySQL 需要项目和论文加企鹅:2583550535 医院挂号就诊系统的设计与实现_哔哩哔哩_bilibili 随着社会的发展,医疗资源分布不均,患者就诊难、排队时间长等问题日益突出,传统的…...
SpringBoot整合RabbitMQ的快速使用教程
目录 一、引入依赖 二、配置rabbitmq的连接信息等 1、生产者配置 2、消费者配置 三、设置消息转换器 四、生产者代码示例 1、配置交换机和队列信息 2、生产消息代码 五、消费者代码示例 1、消费层代码 2、业务层代码 在分布式系统中,消息队列是一种重要…...
pytorch比较操作
文章目录 常用的比较操作1.torch.allclose()2.torch.argsort()3.torch.eq()4.torch.equal()5.torch.greater_equal()6.torch.gt()7.torch.isclose()8.torch.isfinite()9.torch.isif()10.torch.isposinf()11.torch.isneginf()12.torch.isnan()13.torch.kthvalue()14.torch.less_…...
别再只盯着CPU内存了!用Prometheus+Grafana打造你的K8S应用黄金监控仪表盘
从基础设施到业务价值:用PrometheusGrafana构建Kubernetes应用黄金监控体系 当Kubernetes集群中的Pod状态全部显示"Running"时,很多团队会误以为万事大吉。直到某天凌晨3点,客服系统被用户投诉淹没,才发现订单成功率已暴…...
CAPL编程从入门到精通:车载网络自动化测试与仿真实战指南
1. 从零开始认识CAPL:不只是CANoe里的脚本 如果你正在从事汽车电子、车载网络相关的开发或测试工作,那么“CAPL”这个名字对你来说一定不陌生。它常常和Vector公司的CANoe、CANalyzer等工具绑定出现,被很多人简单地理解为“CANoe里的脚本语言…...
Pandas数据筛选8大核心技巧:从布尔索引到query高效查询
1. 项目概述:为什么我们需要掌握Pandas数据筛选?如果你用Python做数据分析,那么Pandas库绝对是你的核心武器库。而在这个武器库里,数据筛选——也就是从庞大的数据集中精准地挑出你需要的那些行和列——是每天都要重复无数遍的操作…...
5分钟快速上手Kafka-UI:开源Kafka集群管理工具完整指南
5分钟快速上手Kafka-UI:开源Kafka集群管理工具完整指南 【免费下载链接】kafka-ui Open-Source Web UI for managing Apache Kafka clusters 项目地址: https://gitcode.com/gh_mirrors/kaf/kafka-ui Apache Kafka作为现代数据架构的核心组件,其集…...
CP2K实战指南:CUTOFF与REL_CUTOFF参数的系统化调优策略
1. 理解CUTOFF与REL_CUTOFF的核心作用 刚开始用CP2K做材料计算时,最让我头疼的就是MGRID里这两个参数。记得第一次跑硅晶体能量优化,结果比文献值差了近10%,导师指着屏幕问:"你的网格精度设对了吗?"当时真是…...
抖音批量下载工具终极指南:从零开始实现高效无水印下载
抖音批量下载工具终极指南:从零开始实现高效无水印下载 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback supp…...
ARM+FPGA异构计算在能源电力领域的核心优势与应用实践
1. 项目概述:为什么是ARMFPGA?最近几年,在能源电力这个对可靠性和实时性要求极高的领域,我观察到一股明显的技术趋势:越来越多的项目开始采用“国产ARM处理器 FPGA”的异构计算架构。这不再是实验室里的概念验证&…...
观察Taotoken用量看板如何帮助团队精打细算每一分token
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 观察Taotoken用量看板如何帮助团队精打细算每一分token 对于依赖大模型进行开发的团队而言,成本控制与预算规划是日常运…...
3分钟搞定B站缓存视频转换:m4s-converter无损合并完整指南
3分钟搞定B站缓存视频转换:m4s-converter无损合并完整指南 【免费下载链接】m4s-converter 一个跨平台小工具,将bilibili缓存的m4s格式音视频文件合并成mp4 项目地址: https://gitcode.com/gh_mirrors/m4/m4s-converter 你是否曾经遇到过这样的情…...
从零到部署:在Linux服务器上用Python搭建并调用WPS地理处理服务
从零到部署:在Linux服务器上用Python搭建并调用WPS地理处理服务 当遥感影像分析遇上自动化处理流程,地理信息系统(GIS)开发者常面临一个关键挑战:如何将复杂的空间运算封装成可远程调用的标准化服务?这正是…...
