从零开始ming的多人联机游戏--游戏客户端(1)六边形地图
打算做的小游戏是一个多人联机的策略类游戏,类似于《文明》那种
游戏的玩法并不确定,开这个坑主要是为了入门后端开发,顺便熟悉下游戏开发
这篇文章使用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
从零开始ming的多人联机游戏--游戏客户端(1)六边形地图的更多相关文章
- 从零开始ming的多人联机游戏(3)为socket通讯添加mysql数据库
macOS下visual studio C#加载mySql 本文在上一节的基础上,添加了mysql数据库的功能.client发送信息给服务器后,服务器将收到的消息保存在数据库中. 如果client发送 ...
- WP老杨解迷:如何营造让人花钱的游戏
游戏是最好做也是最不好做的项目,游戏的好坏现在都是直接从数据来说话,Windows Phone的游戏应用同样不可能逃出这个行业准则,要说在市场里做的好,那就直接拿数据来说,几乎没人会去在乎游戏到底传达 ...
- day23 02 组合(继续人狗大战游戏)
day23 02 组合(继续人狗大战游戏) 面向对象的三大特性:继承 多态 封装 先讲解一下组合 组合:一个对象的属性值是另一个类的对象:对象.属性.属性(一般有两个点) 继续扩展day22 01里面 ...
- 如何构建一个多人(.io) Web 游戏,第 2 部分
原文:How to Build a Multiplayer (.io) Web Game, Part 2 探索 .io 游戏背后的后端服务器. 上篇:如何构建一个多人(.io) Web 游戏,第 1 ...
- Golang+Protobuf+PixieJS 开发 Web 多人在线射击游戏(原创翻译)
简介 Superstellar 是一款开源的多人 Web 太空游戏,非常适合入门 Golang 游戏服务器开发. 规则很简单:摧毁移动的物体,不要被其他玩家和小行星杀死.你拥有两种资源 - 生命值(h ...
- JS开发HTML5游戏《神奇的六边形》(一)
近期出现一款魔性的消除类HTML5游戏<神奇的六边形>,今天我们一起来看看如何通过开源免费的青瓷引擎(www.zuoyouxi.com)来实现这款游戏. (点击图片可进入游戏体验) 因内容 ...
- JS开发HTML5游戏《神奇的六边形》(二)
近期出现一款魔性的消除类HTML5游戏<神奇的六边形>,今天我们一起来看看如何通过开源免费的青瓷引擎(www.zuoyouxi.com)来实现这款游戏. (点击图片可进入游戏体验) 因内容 ...
- JS开发HTML5游戏《神奇的六边形》(四)
近期出现一款魔性的消除类HTML5游戏<神奇的六边形>,今天我们一起来看看如何通过开源免费的青瓷引擎(www.zuoyouxi.com)来实现这款游戏. (点击图片可进入游戏体验) 因内容 ...
- JS开发HTML5游戏《神奇的六边形》(三)
近期出现一款魔性的消除类HTML5游戏<神奇的六边形>,今天我们一起来看看如何通过开源免费的青瓷引擎(www.zuoyouxi.com)来实现这款游戏. (点击图片可进入游戏体验) 因内容 ...
随机推荐
- SPOJ VLATTICE (莫比乌斯反演)
传送门:https://www.spoj.com/problems/VLATTICE/en/ 题意: 在三维坐标系下,你在点(0,0,0),看的范围是(n,n,n)以内,求你可以看见多少个点没有被遮挡 ...
- Lede定时重拨
系统,计划任务, 0 4 * * * ifup wan 梅林定时重拨: #! /bin/sh #断开拨号连接 killall pppd #延时10秒 #重新拨号 pppd >& &a ...
- 【Linux】Mac好用虚拟机 Parallels Desktop、FinalShell-多终端连接工具(支持Windows,macOS,Linux)
一.Mac好用虚拟机 Parallels Desktop 1.下载安装: 2.新建虚拟机: 3.配置管理: 二.FinalShell-多终端连接工具(支持Windows,macOS,Linux) 1. ...
- Team Foundation Server 2015使用教程【8】:读取器tfs组的checkin权限修改
- mybatis的核心配置文件
<?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE configurationPUBLIC &q ...
- 经典问题(c++/python)素数、杨辉三角(金字塔型)、统计单词数、简单计算器、密码安全程度、凯撒密码加密、汉诺塔 (python课设实验实例)-- biaobiao88
[编写程序,输人一个大于2的自然数,然后输出小于该数字的所有素数组成的列表.]所谓素数,是指除了1和自身之外没有其他因数的自然数,最小的素数是2,后面依次是3.5.7.11.13... c++代码: ...
- TCP/IP IGMP:Internet组管理协议
1.概述 IGMP协议,让一个物理网络上的所有系统知道主机所在的多播组,ICMP作为IP层的一部分,通过IP数据报进行传输,有固定的报文长度.通过IP首部协议字段值为2指明 类型为1说明是多播路由器发 ...
- HDU4507 吉哥系列故事——恨7不成妻 题解 数位DP
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4507 题目大意: 找到区间 \([L,R]\) 范围内所有满足如下条件的数的 平方和 : 不包含'7' ...
- 洛谷训练新手村之“BOSS战-入门综合练习2”题解
P1426 小鱼会有危险吗 题目链接:https://www.luogu.com.cn/problem/P1426 题目大意: 有一次,小鱼要从A处沿直线往右边游,小鱼第一秒可以游7米,从第二秒开始每 ...
- Linux系统之运行状态分析及问题排查思路
〇.一件事儿 以下分析是站在Java工程师的角度来分析的. 一.CPU分析 分析CPU的繁忙程度,两个指标:系统负载和CPU利用率 1.系统负载分析 系统负载:在Linux系统中表示,一段时间内正在执 ...