打算做的小游戏是一个多人联机的策略类游戏,类似于《文明》那种

游戏的玩法并不确定,开这个坑主要是为了入门后端开发,顺便熟悉下游戏开发

这篇文章使用unity,实现了六边形单元地图的创建。后续的游戏都在这种地图的基础上实现。

实现方法是现成的:https://catlikecoding.com/unity/tutorials/hex-map/part-1/

这篇文章写的非常好,就是有一点不好,文中的代码都是一段一段放出来的,想要完成一定要仔细看完文章,另外一些不熟悉unity的朋友可能有的操作不清楚。

这里我补充一些细节,另外把我实现的完整的unity工程分享出来

------------------------------------------------------------------------------------------------------------------------

关于六边形地图的好处,我再搬运下吧

方形网格地图中一个单元和它的八个邻近单元之间的距离是不同的,所以在策略游戏中会比较不公平(如果地图是由单元格组成的话)

但是六边形单元格组成的地图,中心单元格和邻近单元格距离都是相同的

------------------------------------------------------------------------------------------------------------------------

每个脚本的功能

HexMetrics.cs:六边形外切圆和内接圆的半径,六个顶点相对于中心的坐标都在HexMetrics.cs中定义

HexCoordinates.cs:六边形单元在六边形地图中的坐标,(x,y,z)分别对应六边形三个对边所在的方向,而不是在unity原本的空间坐标系中的坐标

HexCell.cs:六边形预制体Hex Cell加载的脚本,最终生成的地图中每一个单元格都是HexCell的复制,HexCell中保存了单元格的坐标和单元格颜色

HexMesh.cs:对六边形进行三角剖分,并渲染六边形表面

HexGrid.cs:生成六边形地图的脚本,Awake()中创建画布和六边形单元格,每创建一个单元格同时创建一个text用于显示单元格坐标

      update()中不断检查鼠标是否点击到了某个单元格,如果点击,则把该单元格颜色改为粉色

HexCoordinatesDrawer.cs:定义了在unity的object检查器面板中显示单元格坐标的方法

------------------------------------------------------------------------------------------------------------------------

几个需要注意的细节

工程中的几个object都需要做成预制体,把object拖到Assets中即可变为预制体如上图中的蓝色object

Hex Grid中的脚本这里,记得把Hex Cell Label和Hex Cell 勾选上

HexMesh的网格渲染器中元素的材质记得换成我们预先新建的,在assets文件夹下可以创建,创建材质后为材质添加着色器,着色器也要在assets中新建,当然这些在工程中都我都已经做好了。

------------------------------------------------------------------------------------------------------------------------

最后的效果如上图所示,点击单元格可以为其着色

我建好的工程和代码:https://github.com/isyiming/client

unity2019.2.19f1 macos

最新文章

  1. $("<div />")代表的意思
  2. php的SAPI,CLI SAPI,CGI SAPI
  3. Java虚拟机详解05----垃圾收集器及GC参数
  4. codeforces B. Semifinals 解题报告
  5. 【翻译】Kinect Studio是? 三月 SDK Update的新机能
  6. SQL Server 批量插入数据的两种方法
  7. testlink的下载地址
  8. 【POJ3691】 DNA repair (AC自动机+DP)
  9. Struts2 多文件上传
  10. N bulbs(规律)
  11. wvs_patcher批量测试网站
  12. mysql 常用命令集锦[绝对精华]
  13. webapp之路--apple私有属性apple-touch-icon
  14. 201521123113《Java程序设计》第11周学习总结
  15. mysql很有用的语句
  16. multiset的erase()操作中出现跳过元素的问题
  17. 2-Twenty First Scrum Meeting-20151221
  18. hdu 2197 求长度为n的本原串 (快速幂+map)
  19. This function has none of Deterministic,no sql,or reads sql data in its declaration and binary logging is enabled(you *might* want to use the less safe log_bin_trust_function_creators variable
  20. 75.Java异常处理机制throws

热门文章

  1. Qt中动态链接库的使用
  2. Python8_关于编码解码和utf-8
  3. 记一次手工清除挖矿病毒WannaMine V4.0的经历
  4. PHP每日复习任务与复习记录
  5. Hadoop Authentication
  6. 曹工改bug--这次,我遇到了一个难缠的栈溢出bug,还是日志相关的,真的难
  7. 20191031-6beta week 1/2 Scrum立会报告+燃尽图 04
  8. 跟我一起学QT_QT标准对话框_字体选择框
  9. $CF908D\ New\ Year\ and\ Arbitrary\ Arrangement$ 期望$dp$
  10. 日期格式化使用 YYYY-MM-dd 的潜在问题