Unity 制造moba英雄联盟战争迷雾1

Unity 制造moba英雄联盟战争迷雾1

为什么要写这个文章呢?因为我查了很多国内关于战争迷雾的资料,但是写的并不是十分详细,经过我不断踩坑,才做了一个仿造英雄联盟的战争迷雾,所以现在将我浅薄的知识分享一下才写的以下文章.

效果图

第一步先来看一看效果图

原理

首先将地图分为一个个小方块,抽象图如下
每个方块的坐标是左下角的位置
其中红色的是障碍物
黄色是玩家
黑色就是被红色挡住的不可见方块
怎么计算是否可见呢?
首先得到玩家坐标到障碍物坐标的向量和到障碍物右上角的坐标向量,
图中的两条虚线就是我们要的向量,然后取得人物坐标到其他点的左下角向量,然后计算其是否在两条图中标识的虚线之间,蓝色就是在两条虚线之间的向量也就是那些玩家到不可见方块的向量
Unity 制造moba英雄联盟战争迷雾1_第1张图片

如何得到数据?

看到这里你可能就会问了如何生成地图数据?难道要我一个个点的去设置是否可行走吗?答案是否定的.众所周知unity是可以生成地图的行走网格的.如下图

Unity 制造moba英雄联盟战争迷雾1_第2张图片
那么接下来的问题是怎么把这些数据转换为可以使用的呢?
unity提供了一个api:

NavMesh.SamplePosition

这个api可以判断某一点是否是在可行走网格里的,所以只要循环遍历地图所有的点就可以产生我们需要的数据然后保存到文件里.

但是复杂的模型会导致网格生成不精确
我的解决方法是让复杂的模型不烘焙然后用unity自带的方块椭圆摆成那个复杂的模型然后烘焙产生行走网格.然后再在unity编辑器里产生数据
Unity 制造moba英雄联盟战争迷雾1_第3张图片

如何使用这些数据?

下一篇再讲

你可能感兴趣的:(Unity 制造moba英雄联盟战争迷雾1)