---恢复内容开始---

已经有很长一段时间没做项目了上半年大多数时间都荒废在王者荣耀,哈哈,S8赛季也上了王者,美滋滋

转回正题,公司需要开个新项目,需要把原有的moba游戏,改成类似绝地求生那玩法

原有moba项目是用unity 做的,本人已经有很长一段时间没接触,颓废哎~~,还好经过几天努力基本熟悉了

绝地求生游戏 基本玩法就是把100个玩家放到一个荒岛上,每过几分钟岛上就会出现毒雾圈,然后慢慢缩小,

直到剩下最后一个玩家,就是最后冠军,我目前就是需要实现毒雾圈功能

首先需要在游戏场景里面放置一个毒雾圈prefab,这个我是从原先项目里面暂时借用的美术资源,毒雾圈开始时候放置在(0,0)位置

初始化大小 UIEffectItem_Home_Scale = new Vector3(470.0f, 200.0f, 470.0f);//场均毒雾初始大小,

怎么计算出scale 大小呢,我通过以下代码实现

在 void OnDrawGizmos() 里面放入以下代码

// for hs
Vector3 center = Vector3.zero;
Gizmos.color = Color.yellow;
int r = 140;
for (int i = 0;i < 360;i++)
{
float x1 = center.x + r * Mathf.Cos(i * Mathf.PI / 180);
float z1 = center.z + r * Mathf.Sin(i * Mathf.PI / 180);
Vector3 pos1 = new Vector3(x1, 0, z1);

float x2 = center.x + r * Mathf.Cos((i + 1) * Mathf.PI / 180);
float z2 = center.z + r * Mathf.Sin((i + 1) * Mathf.PI / 180);
Vector3 pos2 = new Vector3(x2, 0, z2);
Gizmos.DrawLine(pos1, pos2);
}

在场景里面画出毒雾圈(黄色线条),逐步调整 毒雾圈scale场景,得出 缩放比例(470.0f, 200.0f, 470.0f);

放置好毒雾圈后,还需要显示在小地图上面,原本设想也可以在场景里面放置一个圆圈prefab

但是碰到一个问题,就是缩放时候会出现圆圈的边缘同时放大,十分困扰,于是问百度说可以用shader画出来

效果下图,只要设置好画的原点和半径就可以了

下面就是画圆圈的关键shader代码

bool circle(vec2 pos, vec2 center, float radius, float3 color, float antialias) { 
//float d = length(pos - center) - radius;
//float t = smoothstep(0, antialias, d);
//return vec4(color, 1.0 - t);

if (abs(length(pos - center) - radius) < 2)
{
// In the circle
//return vec4(color, 1.0);
return true;
}
else
{
//return vec4(0, 0, 0, 0);
return false;
}
}

shader学习参考 http://blog.csdn.net/candycat1992/article/details/44039077 多谢这个博主 写得简单明了

大概学习1天也能基本明白shader怎么写了

写好shader后,新建一个material 命名为circle.mat 再把shader 拖进入circle.mat

在场景里面建立一个gameobject 加入image 组件,把circle.mat拖入image组件的material里面。

UnityEngine.UI.Image image = UIBattleManager.Self.duwucircle.GetComponent<UnityEngine.UI.Image>();

image.material.SetVector("_safeParameters", new Vector4(center.x, center.y, safe_r * getmapscale(), 10));

代码里面这样就可以控制shader参数(也是问百度才知道这样写的)

好了,几个关键步骤都写完了,剩下需要补齐 坐标移动,坐标转动的代码需要读者自己去动手好了

资料参考

http://blog.csdn.net/candycat1992/article/details/44039077

http://blog.csdn.net/candycat1992/article/details/44244549

在moba游戏里面模拟实现绝地求生毒雾圈功能的更多相关文章

  1. 落入绝地求生的Python神仙,实现绝地求生无后座!

    叙述 绝地求生已经出来那么久了,大家应该都晓得如今的游戏情形很是差 .特别在高端局,神仙满天飞 搞得很多人类玩家很是没有游戏体验! 由于绝地求生的火爆,繁衍出许多外挂流传于各个地方.飞机上.网吧内,各 ...

  2. 洗礼灵魂,修炼python(41)--巩固篇—从游戏《绝地求生-大逃杀》中回顾面向对象编程

    声明:本篇文章仅仅以游戏<绝地求生>作为一个参考话题来介绍面向对象编程,只是作为学术引用,其制作的非常简易的程序也不会作为商业用途,与蓝洞公司无关. <绝地求生>最近很火,笼络 ...

  3. kaggle——绝地求生游戏最终排名预测

    绝地求生游戏最终排名预测 知识点 数据读取与预览 数据可视化 构建随机森林预测模型 导入数据并预览 先导入数据并预览.本次实验同样来源于 Kaggle 上的一个竞赛: 绝地求生排名预测 ,由于原始数据 ...

  4. Unite 2017 | 从《闹闹天宫》看MOBA游戏里的网络同步技术

    http://mp.weixin.qq.com/s/0v0EU79Q6rFafrh8ptlmhw 在Unite 2017 Shanghai案例分享专场,来自蓝港互动<闹闹天宫>项目组的主程 ...

  5. SUST OJ 1642: 绝地求生—死亡顺序

    1642: 绝地求生-死亡顺序 时间限制: 1 Sec  内存限制: 128 MB提交: 81  解决: 53[提交][状态][讨论版] 题目描述 最近陕西科技大学六公寓的小东同学深深的入迷了一款游戏 ...

  6. MOBA游戏的网络同步技术

    转自:http://www.gameres.com/750888.html 在5月13日Unite 2017 案例分享专场上,蓝港互动<闹闹天宫>项目组的主程序陈实分享了MOBA游戏的网络 ...

  7. 绝地求生大逃杀BE启动失败,应用程序无法正常启动

    今日更新绝地求生大逃杀后部分客户反馈绝地求生点击启动提示BE安装,应用程序无法启动 问题原因:经过排查发现,客户开启过超级工作站运行过游戏,在系统镜像包中保留了旧版的BE服务,致使新版BE无法安装,冲 ...

  8. 《绝地求生大逃杀》BE错误怎么办 BE服务未正常运行及安装失败解决方法

    <绝地求生大逃杀>BattlEye Launcher是游戏的反作弊程序,也是启动过程中做容易出现错误的,今天小编带来“爆锤吧务”分享的<绝地求生大逃杀>BE服务未正常运行及安装 ...

  9. MOBA 游戏技能系统设计 2.0

    随着游戏开发的完整度提升,技能系统的设计复杂性也越来越高,导致了用模板方式的配置方法和处理方法会导致以下几个问题: 代码冗余 排错困难 配置项冗余 熟悉业务流程时间长 扩展性低 经过我思考决定重写之. ...

随机推荐

  1. Android使用RxJava+Retrofit2+Okhttp+MVP练习的APP

    Android使用RxJava+Retrofit2+Okhttp+MVP练习的APP 项目截图     这是我的目录结构 五步使用RxJava+Retrofit2+Okhttp+RxCache 第一步 ...

  2. 吾八哥学Python(一):搭建Python开发环境(Windows)

    学习Python的第一步当然是要配置一下开发环境了,这里记录一下本人在windows 10(64位)下配置Python开发环境的过程,供跟我一样的新手参考一下. 一.下载Python安装包 目前最新的 ...

  3. flying-saucer + iText + Freemarker实现pdf的导出, 支持中文、css以及图片

    前言 项目中有个需求,需要将合同内容导出成pdf.上网查阅到了 iText , iText 是一个生成PDF文档的开源Java库,能够动态的从XML或者数据库生成PDF,同时还可以对文档进行加密,权限 ...

  4. 设置vim的默认工作路径同时与自动设当前编辑的文件所在目录为当前工作路径不冲突

    问题: 想让vim自动设当前编辑的文件所在目录为当前工作路径不冲突,但是当vim新建文件的时候,工作路径会又自动切换缓存path下. 如何使当使用vim打开文件时,vim的工作路径是当前文件所在的路径 ...

  5. Ubuntu系统下的实用软件推荐

    想要在ubuntu下工作? 又担心影响效率? 这些软件可以帮助你解决问题 ! 基本在windows上可以做到的功能, 在linux中也同样能够实现,而且自己寻找解决方案的过程才是最有趣的! 1.gua ...

  6. 【NOIP2016 Day1 T1】玩具谜题

    原题:https://www.luogu.org/problemnew/show/P1563 题目大意:有N个人围成一个圈,给定一串未化简的物品移动关系,要求你通过这些未化简的关系以及起始段的编号,求 ...

  7. gnome 3 美化

    首先,去http://gnome-look.org/找到需要的主题,然后手动安装或者用下载到的主题包里的脚本安装 手动安装对应路径如下: 鼠标,图标主题解压放置:~/.icons或/usr/share ...

  8. [Web开发(1)] MyEclipse/Eclipse 使用Tomcat部署Web/Maven项目经典错误

    1.Tomcat启动报错:server tomcat start within 45 seconds 问题原因:由于eclipse默认Tomcat设置是启动时间为45s,所以在45s内没有启动成功就会 ...

  9. CentOS设置系统时间、硬件时间、以及定时校对时间

    CentOS设置系统时间和时区 一.设置时区 方法一:使用setup工具 setup 选择Timezone configuration 选择Asia/Shanghai 空格键勾选上System clo ...

  10. Elasticsearch 索引别名与Template

    在使用elasticsearch的时候,经常会遇到需要淘汰掉历史数据的场景. 为了方便数据淘汰,并使得数据管理更加灵活,我们经常会以时间为粒度建立索引,例如: 每个月建立一个索引:monthly-20 ...