需要能动态改变地图的层数,当输入的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));
}

其它的衍生就不一一实现了。

关于六边形地图的生成算法相关推荐

  1. java推箱子随机地图的产生_为什么没有人研究推箱子地图自动生成算法?算法随机生成地图,不需要地图库!?...

    其实是有的,可以参考 Ty Taylor 的 The Art and Science of Procedural Puzzle Generation,https://www.youtube.com/w ...

  2. php制作随机地图,随机生成Roguelike游戏地图算法

    www.roguebasin.com 有很多相关的roguelike资料 相当有价值 首先随机生成一套地图世界有几个概念. 数据结构 1.world 2.map 3.room 4.corridor 地 ...

  3. 六边形地图生成(1)——基础地形

    看了大佬的六边形地图教程,跟着原教程敲了一遍代码,使用的引擎是unity,想把六边形地形的生成思路记录下来. 1.基础六边形网格   基础网格很容易绘制,六个边缘点,一个中心点,如何在引擎中绘制动态网 ...

  4. 一种简单的2D Roguelike地图生成算法

    前言 最近刚确定下来毕业设计要做的内容--一个2DRoguelike类型的游戏.因此研究了几天的地图生成算法,终于于如今成功制作了地图的生成.先放几张示意图感受一下: 是不是还蛮有感觉的呢! 一.核心 ...

  5. 波函数坍缩 地图生成-算法过程可视化(2D)

    波函数坍缩(Wave Function Collapse)生成 ,是一个随机程序化的生成算法,比较经典的是用在游戏场景的地图生成.想要了解详细的解读可以参考<波函数坍缩算法>的无限城市- ...

  6. 【游戏设计图形学】在地图上生成蜿蜒河流的两种方法

    引言 在开发游戏时,我们经常需要用到随机生成的地形,而河流是其中不可或缺的一部分.本文章将探讨如何在地图上生成河流. 河流生成的自然原因 高山积雪,地下水,雨水是河流发源的主要原因,而由于雨水形成的小 ...

  7. c语言 迷宫深度遍历 算法,图的遍历迷宫生成算法浅析

    1. 引言 在平常的游戏中,我们常常会碰到随机生成的地图.这里我们就来看看一个简单的随机迷宫是如何生成. 2. 迷宫描述随机生成一个m * n的迷宫,可用一个矩阵maze[m][n]来表示,如图:   ...

  8. 基于栅格地图的粒子群算法_基于GMapping的栅格地图的构建

    上篇文章讲解了如何在ROS中发布栅格地图,以及如何向栅格地图赋值. 这篇文章来讲讲如何将激光雷达的数据构建成栅格地图. 雷达的数据点所在位置表示为占用,从雷达开始到这点之间的区域表示为空闲. 1 GM ...

  9. 曲线的生成算法实现_PCGPlanet1-地形生成算法简介

    比较常用的地形生成算法有三种: 四叉树算法,GeoMipmap算法,移动立方体算法 目前市面游戏采用的方案基本都是以这三种算法为基础实现的,下面依次进行介绍 四叉树算法 很经典的算法,在没有GPU的时 ...

最新文章

  1. DLR学习笔记(01)
  2. Apache发布Groovy 2.5正式版及3.0预览版
  3. Linux命令(持续更新)
  4. 2015多校10 1006.CRB and Puzzle HDU5411(邻接矩阵求k长路条数,矩阵快速幂
  5. 2019年衡水中学高考喜报
  6. WF(工作流)模块介绍
  7. NGUI-Tweens
  8. 【实践】js实现随机不重复抽取数组中元素
  9. Centos 安装配置 vsftpd
  10. C++学习之路 | PTA(天梯赛)—— L2-013 红色警报 (25分)(带注释)(并查集)(精简)
  11. Color类提供的颜色
  12. 在哪里学python-学Python从哪里开始?
  13. Win10任务栏卡死,无响应,点不动解决方法集锦
  14. 计算机专业选锐龙还是英特尔,如何选择cad制图用英特尔还是锐龙?
  15. 机器学习数据挖掘笔记_16(常见面试之机器学习算法思想简单梳理)
  16. ESD:“蓝灯“精灵如何对抗27KV空气式放电
  17. 千耘导航助力新疆精河县数万亩棉花播种
  18. noip2016普及组初赛中山市成绩表及分数线
  19. 十三、JavaScript ajax请求
  20. 多个USB转串口设备区分方法

热门文章

  1. 手机邮箱中的邮件里的链接的打开方式/app更改方法
  2. 前台使用viewbag
  3. 基于微信小程序开发的我最在行的小游戏
  4. 影响信用贷款的四大条件
  5. 使用GatewayWorker框架,多个workerman进程(businessworker)负载不均衡的问题解决过程
  6. 在虚拟机上安装gho、esd(wim)系统镜像文件
  7. win32com操作excel 包含常用api等等
  8. 微软官方推安全管家,或许不是一场作秀
  9. 例7.14 有一个一维数组,内放10个学生成绩,写一个函数,当主函数调用此函数后,能求出平均分、最高分和最低分。
  10. 出海竞争加剧,全球头部秀场直播平台LiveMe如何应对新挑战?