unity 地图画格_【UnityC#教程—六边形地图系列之创建网格(上)】-蛮牛译馆-【游戏蛮牛】-游戏出海,ar增强现实,虚拟现实,unity3d,unity3d教程下载首选u3d,unity3d...

1. 关于六边形

为什么使用六边形?如果你需要一个网格,似乎直接使用正方形较为合理。正方形易画、易地位,但它们也有不足。看看网格中的一个方格。然后再看看它的邻居们。

a80823ce673b94f27b262245b48a9744.gif

图片 2.png (135.79 KB, 下载次数: 66)

A square and its neighbors.

2016-10-13 00:04 上传

一共有八个邻居。其中四个可以通过四边到达。它们分别是水平和竖直的邻居。其它四个可以通过四角到达。它们是对角邻居。

网格两相邻部分中心间的是多少呢?如果边长为 1,那么对于水平和竖直邻居来说,结果为 1。而就对角邻居而言,结果为√2。

两种不同相邻类型结果的不同导致错杂。如果使用离散运动,你将如何处理对角运动呢?全部允许?你该怎样创建一个更为有机的状态呢?不同的游戏使用不同的手段,伴随不同的优势与劣势。手段之一就是完全不使用正方形,改为使用六边形。

a80823ce673b94f27b262245b48a9744.gif

图片 3.png (189.62 KB, 下载次数: 63)

A hexagon and its neighbors.

2016-10-13 00:05 上传

与正方形相比,一个六边形只有六个邻居,而不是八个。且所有邻居皆为临边邻居。并不存在角邻居。所以它只有一种相邻方式,那就会简化很多事。当然,一个六边形网格没有四边形网格那般容易构造,但我们能解决它。

开始前,我们必须选定六边形的大小。先让边长为10个单元。因为一个六边形包含了一个围成一圈的6个等边三角形,所以中心到任意一角的距离都同样是10。这也就定义了我们的六边形的外半径。

a80823ce673b94f27b262245b48a9744.gif

图片 4.png (219.89 KB, 下载次数: 71)

A hexagon's outer and inner radius.

2016-10-13 00:07 上传

同样还存在着一个内半径,那就是中心点到各边的距离。该值的度量是很重要的,因为相邻两六边形中心的距离为其两倍。内半径等于√3/2倍的外半径,在我们的例子中就等于5√3。让我们将其存入一个静态类以便访问。

[C#] 纯文本查看 复制代码usingUnityEngine;

publicstatic class HexMetrics {

public const float outerRadius = 10f;

public const float innerRadius =outerRadius * 0.866025404f;

}

怎样导出内半径?

再定义出与单元格中心相关的六个中心位置。注意,定位一个

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值