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

已经有很长一段时间没做项目了上半年大多数时间都荒废在王者荣耀,哈哈,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. java使用spark/spark-sql处理schema数据(spark1.6)

    1.spark是什么? Spark是基于内存计算的大数据并行计算框架. 1.1 Spark基于内存计算 相比于MapReduce基于IO计算,提高了在大数据环境下数据处理的实时性. 1.2 高容错性和 ...

  2. 通过VBA,当在EXCEL单元格中输入任意的日期格式时,都能自动转换为指定的标准格式的日期值

    在日常录入EXCEL表格的单元格里 ,我们输入一些一般性的日期内容,如:2017-10-17 或 2017/10/17时,EXCEL会自动识别为日期并按单元格设计格式显示,单元格中存储的值也是日期格式 ...

  3. WPF 圖表控件 MetroChart

    Torsten Mandelkow MetroChart包括以下: ColumnChart(ClusteredColumnChart,StackedColumnChart,StackedColumnC ...

  4. win10 UWP 圆形等待

    看到一个圆形好像微软ProgressRing 我们可以用自定义控件 按ctrl+shift+a 用户控件 我们可以用Rectangle做圆形边 只要Rectangle RadiusX>0圆角 因 ...

  5. 简述Apache的ab测试主要有那些关键指标

    一.ab的原理 ab是apachebench命令的缩写. ab的原理:ab命令会创建多个并发访问线程,模拟多个访问者同时对某一URL地址进行访问.它的测试目标是基于URL的,因此,它既可以用来测试ap ...

  6. [转]pycharm快捷键

    开始学习python用的ide是pycharm,之前做java一种用eclipse,刚开始使用pycharm快捷键与eclipse有很大不同,慢慢适应中. 下面列举了下pycharm的快捷键,内容转自 ...

  7. Linux入门(15)——Ubuntu16.04安装codeblocks搭建C/C++的IDE环境

    安装codeblocks: sudo add-apt-repository ppa:damien-moore/codeblocks-stable sudo apt-get update sudo ap ...

  8. LeetCode 280. Wiggle Sort (摆动排序)$

    Given an unsorted array nums, reorder it in-place such that nums[0] <= nums[1] >= nums[2] < ...

  9. DNS主从服务部署

    (1)节点信息 console01 主DNS 192.168.80.3 192.168.10.3 console02 从DNS 192.168.80.4 192.168.10.4 (2)环境部署 # ...

  10. linux学习(十一)用户和用户组管理

    一.用户文件 文件:/etc/passwd 这个文件记录了用户了用户名,用户id,所属组,家目录,shell信息: [root@iZ25lzba47vZ ~]# tail -n3 /etc/passw ...