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

本文详述了在Unity中实现类似英雄联盟战争迷雾的方法,通过将地图划分为小方块,利用向量计算确定视野遮挡,介绍了如何自动生成地图数据并存储,以实现游戏中的视野效果。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

效果图

第一步先来看一看效果图
在这里插入图片描述

原理

首先将地图分为一个个小方块,抽象图如下
每个方块的坐标是左下角的位置
其中红色的是障碍物
黄色是玩家
黑色就是被红色挡住的不可见方块
怎么计算是否可见呢?
首先得到玩家坐标到障碍物坐标的向量和到障碍物右上角的坐标向量,
图中的两条虚线就是我们要的向量,然后取得人物坐标到其他点的左下角向量,然后计算其是否在两条图中标识的虚线之间,蓝色就是在两条虚线之间的向量也就是那些玩家到不可见方块的向量
在这里插入图片描述

如何得到数据?

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

在这里插入图片描述
那么接下来的问题是怎么把这些数据转换为可以使用的呢?
unity提供了一个api:

NavMesh.SamplePosition

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

但是复杂的模型会导致网格生成不精确
我的解决方法是让复杂的模型不烘焙然后用unity自带的方块椭圆摆成那个复杂的模型然后烘焙产生行走网格.然后再在unity编辑器里产生数据
在这里插入图片描述

如何使用这些数据?

下一篇再讲

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值