浅谈cocosd游戏中天气系统的简单实现二律背反

此博客由一个新手游戏程序编写,没有高深的技术,基本是天气效果表现和代码设计的浅谈,如果有更好的实现方法,欢迎指正。

该系统设计背景:2D游戏、正交45度表现地图、以及同一张地图上存在不同气候的区域/地形,需要体现不同天气效果以及不同天气的切换

类似游戏:三国群英传(地图相似)、塞尔达传说-众神的三角力量(天气表现相似)、口袋妖怪绿宝石(天气表现相似)

额外系统:区域划分系统

根据地图的设计,各个理论上会出现不同气候的地形均放在一张地图里面,因此在游戏中就需要有一个类似“气象台”的系统来控制不同区域的天气,然后根据玩家所在区域去“表现”当前区域的天气,该设计的目的就是为了节省cpu和内存。

众所周知,天气的表现是会有不小的消耗的(2d游戏中,大量的雨滴粒子以及地面滴水表现;3d游戏中则是画面的渲染),直接全场景添加天气的效果明显不现实,所以采用全局计算天气的状态,再根据位置表现天气的方式去实现该系统

第一点的实现,在此不展开讲,区域划分的方式因人而异,博主采用的方式就是把区域看成一个多边形去做,如果使用这种方法的话,区域判定提供两种方式:

这个可以去搜索“判断点是否在多边形内部”,然后定时去计算。

2)物理框碰撞。

这个方法是博主朋友提议的,并未实现。也是把区域看成一个多边形,不过这个多边形是一个物理框,玩家(也需要有物理框)进入和离开区域的时候去调用其碰撞函数,再去判定位置

天气状态也是因人而异,不过最重要的就是“天气”和“天数”了。

不管用什么方式得到当前区域的天气之后,就需要去表现天气。表现的方式就是在摄像机上,把粒子和效果添加到相机节点上(或者根据相机位置添加到地图上),具体的表现和实现在下一节讲述。

天气系统的运作方式决定了之后,就是去设计天气的表现效果了。

博主设计的天气目前有四种:小雨、烈日、沙暴和暴雨

效果参考:

该天气推荐使用cocos2d的粒子编辑器(Particle Builder)做。粒子编辑器可以用一张图片表现各种效果,如下面两张图,只需要调节参数就可以做出下雨特效

下雨的时候可以在相机上再添加一个图片精灵(或者着色精灵)去实现变暗效果,通过修改颜色和透明度起到天变暗的效果,在暴雨天下,设置可以在几帧内瞬间改变亮度和颜色,起到打雷的表现效果

根据我的理解,粒子编辑器只能针对一张图片做特效,而地面滴水需要一个动画表示,所以需要创建精灵节点去播放动画,实现方式下文再讲。下图是植物大战僵尸滴水特效:

滴水精灵节点需要添加在地图节点上,如果添加在相机节点上的话,那么如果相机跟随人物移动的话,滴水还没消失就会移动会看上去很别扭。

滴水效果添加是很有必要的,博主表达能力不强,所以只能用“感觉上没滴水的雨很别扭”这句话去形容。

最终效果:

看到图应该就能理解了,目前实现方式为一张图片循环移动。

烈日实现的效果目前参考口袋妖怪绿宝石的烈日的效果,在之前下雨的着色精灵把透明度调高,改变颜色实现(和雨天的闪电闪屏效果类似),不过效果并不是很好……

各个表现天气的精灵都需要独立,目的是防止在“切换”表现天气时出现冲突。人物从一个区域走到另外一个区域的时候,天气系统需要做的事是:原区域天气逐渐消失,现区域天气逐渐出现,如果所有精灵(或者个别精灵)共用一个节点的话,那么“新”的天气精灵会覆盖之前的天气精灵,导致原区域天气瞬间消失。

说简单一点就是划分区域的时候,把边缘部分再划分一个区域。其目的是防止不同区域刷出完全对立的天气导致的不合理,比如说沙漠目前处于烈日状态,而沙漠外的草原在下暴雨,如果没有做过渡区,会出现“烈日渐渐消失,暴雨渐渐出现”的天气切换效果,虽然是渐变效果,但还是出现了烈日和暴雨同时出现的画面,非常不合理。

前文讲了,滴水效果是动画效果,不能用粒子编辑器来做。所以博主的实现方式是:在初始化天气的时候,直接创建一堆精灵(比如暴雨天,地面上需要有300个滴水效果),每帧(时间间隔可以改)去播放动画,在播放动画之前把精灵移动到摄像机视野范围内。当前区域天气的表现结束的时候,也不要销毁精灵, 而是继续保留,其目的是防止频繁的创建精灵导致的消耗,水滴精灵的内存占用和地图相比,通常只占了很小一部分,权衡之下,可以用空间去换时间。

因为博主个人原因,代码不愿意公开,所以本篇博文不过是个技术总结罢了。

总而言之,天气系统在游戏中不是一个很难实现的系统,不过在实际编写代码的过程中还是会遇到很多问题。

天气系统的主要难点只有两个,一是各种渐变效果,二是天气的表现效果,没有很硬核的技术。

THE END
0.如何在手机游戏中实现下雨系统?游戏中下雨的做法如何在手机游戏中实现下雨系统? 先展示最终效果: 雨水会导致物体潮湿,会在平面形成水波,会在斜面形成纹路。雨会被物体阻挡,阻挡的部分依然保持干燥,干燥和潮湿有过度。水积累到一定程度还会有反射。 很早就想做一个完整的天气系统。不过难度太大了,所以打算拆分成一个个小系统。首先就是做最常见的下雨。jvzquC41dnuh0lxfp0tfv8|cpiiig€jp1cxuklqg1fkucrqu13815>>72;
1.为了刁难玩家,开发者是如何用天气系统整活的?|游民星空甚至当年《绝地求生》《正当防卫4》等游戏为了炫技,直接将动态天气当作游戏的卖点大肆宣传。现如今,拥有天气系统的游戏已经屡见不鲜,即便在画面手游中也已经得到广泛运用。但鲜有人知的是,这个近几年才全面普及的天气系统,其实四十年前就已经在游戏圈中崭露头角。jvzquC41ycv/ijrgtuqz0lto1pkxu8Hqpvkov66745<727mvon
2.《暴雨》中文奖杯列表一览白金奖杯解锁条件说明《暴雨》中文奖杯列表一览 白金奖杯解锁条件说明 《暴雨》中共有57个奖杯,其中包含50个铜杯,4个银杯,2个金杯以及1个白金杯。那么它们具体的解锁条件都是怎样的呢?今天就为大家分享一篇《暴雨》中文奖杯列表一览,一起来了解一下吧。jvzquC41yy}/ijrgtuqz0lto1jgofktqm1813A5813678;;;0unuou
3.在iPad上了解天气图标“天气” App 中的图标指示了不同的天气状况,如雾或雾霾。以下是部分天气图标的列表及其含义。 图标 描述 日出 日落 晴朗无云/大部晴朗无云 局部多云 雾霾 雾 有风/微风 多云 雷暴雨 有雨 暴雨 微雨/冻细雨 下雪 大雪/暴风雪 冻雨/雨夹雪/混合雨雪 晴朗无云/大部晴朗无云(夜间) 局部多云(夜间) 微雨(夜jvzquC41uwvqq{y0crvmg7hqo1€i/ls1iwoeg8nrcf5jrji;4e>f6;<1krgeq|
4.48th奴隶纹身(48thSlaveTattoo)图片png游戏爱给网提供海量的图标,界面UI资源素材免费下载, 本次作品为png 格式的48th 奴隶纹身(48thSlave_Tattoo), 本站编号34221892, 该图标,界面UI素材大小为6k, 分辨率为64 x 64, 该素材已被下载:8次, 作者为swockner, 更多精彩图标,界面UI素材,尽在爱给网。 jvzquC41yy}/crlgk0ipo8nvgo5sgwdywaqbayncpa772A3jvor
5.潜水员戴夫第四章全任务流程潜水员戴夫第四章攻略解密小游戏 三个位置分别对应三幅壁画的红色图标 调查壁画 与每幅壁画交互 打开遗物箱 拾取后进入剧情 7.逃避海盗(主线) 技巧: 注意躲避海盗子弹 注意躲避水中礁石 8.下暴风雨的晚上2(支线) 寻找漩涡 30米左右 BOSS——螳螂虾 两个阶段 第一阶段可以躲在铁球后面,用枪打眼睛(狙击枪) jvzquC41re464yp0eqs0orok19;65?=:0unuou
6.天涯明月刀唐门pvp心得介绍网络游戏游戏攻略鹰扬成功后,立刻接空中技能,太白苍龙出水,飞燕逐月,酌情用;丐帮追风踢接近+打断技或压制;神威空中破军接天煞突脸;唐门可以裂爆打断或者快速连按暴雨梨花拉开距离。 很难,多练练,你可以的。 跳+冲+破军或者追风或者苍龙,可以突进超远距离,不妨一试! jvzquC41yy}/lk:30pku1ptpin{f1:=:92:/j}rn
7.光环来袭,幻鬼商店开启!火柴人联盟2新英雄龙女在该英雄装备上了暴雨梨花后,在攻击时有概率触发,释放出漫天的暴雨梨花针对敌人造成大量伤害。 五、风女新皮肤“银光女仆” 作为S级英雄,风女从上线以来一直很强,大招“风卷残云”的特性使其人气居高不下。在本次更新中,我们也带来了风女的第一款皮肤“银光女仆”。 jvzquC41c0:4;B3ep1mh1<;559:87h6338840qyon
8.暴雨警告专题模板暴雨警告图片素材下载我图网暴雨警告专题为您整理了原创高质量暴雨警告图片素材供您在线下载,PSD/JPG/PNG格式暴雨警告模板下载、高清暴雨警告图片大全等,下载图片素材就上我图网。jvzquC41o0upqyne0eun1|twuwu05:6942611
9.上古卷轴5暴雨雷电mod上古卷轴5暴雨下的雷电效果MOD下载九种十四款精美游戏图标史前超精美壁纸游戏原声音乐 补丁专题汇总 上古卷轴5随从MOD上古卷轴5美化MOD上古卷轴5功能MOD上古卷轴5服装MOD 上古卷轴5装备MOD上古卷轴5武器MOD上古卷轴5房屋MOD上古卷轴5法术MOD 上古卷轴5铠甲MOD上古卷轴5种族MOD上古卷轴5任务MOD上古卷轴5舞蹈MOD jvzquC41fn44fvlcog4dqv4rcvii1:64;3