关于六边形地图的生成算法
需要能动态改变地图的层数,当输入的layer不同生成的地图层数也就不同,所以我使用算法动态生成棋盘格地图。
通过定义好的tileWeight和tileHeight,i从下到上,j从左到右确定每个格子的世界坐标x,y。
关键代码如下:
for(int i=2*layer-1);i>=0;i--){int count=(i>=layer?3*layer-2-i:i+layer);//count代表当前行的格子数for(int j=0;j<count;j++){float x=j*tileWeight-(count-1)*tileWeight/2;float y=(i-layer+1)*tileHeight;}
}
我将生成的格子定义x,y,z三个坐标
https://www.redblobgames.com/grids/hexagons/
在这个上有解释,如以下图
好吧,其实这个不是关键,没有定义也不影响我地图的生成,只是定义了之后格子的位置可以很方便的获得
生成地图格子的代码如下:(Unity3D的脚本)
GameObject go = Instantiate(TilePrefab,new Vector3(x,y,0),TilePrefab.transform.localRotation);
Tile tile=go.AddComponent<Tile>();
tile.x=i<layer?j+1-layer:j-(2*layer-i-2);
tile.y=i<layer?i-j:layer-j-1;
tile.z=Layer-i-1;
将以上代码写到for里面的x,y值下面即可,这里还要新建一个Tile(格子)类定义x,y,z
生成效果:将layer设置为4就可以生成如上面的六边形图
我在自己的Unity项目中设置好一个TilePrefab生成如下:
那么如果我要在这个地图上再实现寻路,最基本的我需要两个Tile的距离值
public float Distance(Tile a,Tile b)
{return (Mathf.Abs(a.x-b.x)+Mathf.Abs(a.y-b.y)+Mathf.Abs(a.z-b.z));
}
其它的衍生就不一一实现了。
关于六边形地图的生成算法相关推荐
- java推箱子随机地图的产生_为什么没有人研究推箱子地图自动生成算法?算法随机生成地图,不需要地图库!?...
其实是有的,可以参考 Ty Taylor 的 The Art and Science of Procedural Puzzle Generation,https://www.youtube.com/w ...
- php制作随机地图,随机生成Roguelike游戏地图算法
www.roguebasin.com 有很多相关的roguelike资料 相当有价值 首先随机生成一套地图世界有几个概念. 数据结构 1.world 2.map 3.room 4.corridor 地 ...
- 六边形地图生成(1)——基础地形
看了大佬的六边形地图教程,跟着原教程敲了一遍代码,使用的引擎是unity,想把六边形地形的生成思路记录下来. 1.基础六边形网格 基础网格很容易绘制,六个边缘点,一个中心点,如何在引擎中绘制动态网 ...
- 一种简单的2D Roguelike地图生成算法
前言 最近刚确定下来毕业设计要做的内容--一个2DRoguelike类型的游戏.因此研究了几天的地图生成算法,终于于如今成功制作了地图的生成.先放几张示意图感受一下: 是不是还蛮有感觉的呢! 一.核心 ...
- 波函数坍缩 地图生成-算法过程可视化(2D)
波函数坍缩(Wave Function Collapse)生成 ,是一个随机程序化的生成算法,比较经典的是用在游戏场景的地图生成.想要了解详细的解读可以参考<波函数坍缩算法>的无限城市- ...
- 【游戏设计图形学】在地图上生成蜿蜒河流的两种方法
引言 在开发游戏时,我们经常需要用到随机生成的地形,而河流是其中不可或缺的一部分.本文章将探讨如何在地图上生成河流. 河流生成的自然原因 高山积雪,地下水,雨水是河流发源的主要原因,而由于雨水形成的小 ...
- c语言 迷宫深度遍历 算法,图的遍历迷宫生成算法浅析
1. 引言 在平常的游戏中,我们常常会碰到随机生成的地图.这里我们就来看看一个简单的随机迷宫是如何生成. 2. 迷宫描述随机生成一个m * n的迷宫,可用一个矩阵maze[m][n]来表示,如图: ...
- 基于栅格地图的粒子群算法_基于GMapping的栅格地图的构建
上篇文章讲解了如何在ROS中发布栅格地图,以及如何向栅格地图赋值. 这篇文章来讲讲如何将激光雷达的数据构建成栅格地图. 雷达的数据点所在位置表示为占用,从雷达开始到这点之间的区域表示为空闲. 1 GM ...
- 曲线的生成算法实现_PCGPlanet1-地形生成算法简介
比较常用的地形生成算法有三种: 四叉树算法,GeoMipmap算法,移动立方体算法 目前市面游戏采用的方案基本都是以这三种算法为基础实现的,下面依次进行介绍 四叉树算法 很经典的算法,在没有GPU的时 ...
最新文章
- DLR学习笔记(01)
- Apache发布Groovy 2.5正式版及3.0预览版
- Linux命令(持续更新)
- 2015多校10 1006.CRB and Puzzle HDU5411(邻接矩阵求k长路条数,矩阵快速幂
- 2019年衡水中学高考喜报
- WF(工作流)模块介绍
- NGUI-Tweens
- 【实践】js实现随机不重复抽取数组中元素
- Centos 安装配置 vsftpd
- C++学习之路 | PTA(天梯赛)—— L2-013 红色警报 (25分)(带注释)(并查集)(精简)
- Color类提供的颜色
- 在哪里学python-学Python从哪里开始?
- Win10任务栏卡死,无响应,点不动解决方法集锦
- 计算机专业选锐龙还是英特尔,如何选择cad制图用英特尔还是锐龙?
- 机器学习数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)
- ESD:“蓝灯“精灵如何对抗27KV空气式放电
- 千耘导航助力新疆精河县数万亩棉花播种
- noip2016普及组初赛中山市成绩表及分数线
- 十三、JavaScript ajax请求
- 多个USB转串口设备区分方法