赞
踩
玩家们心里都清楚,其实游戏的品类超级多,有些人喜欢玩moba、射击竞技类的,有些人喜欢塔防、策略、回合制类的,而又有些人喜欢经营养成、休闲益智类的。休闲益智类游戏,虽没像moba类游戏的激烈操作带来的刺激感,但舒缓的节奏,配合唯美的美术音乐以及很棒故事主题,同样能赢得玩家的喜爱。我在一些应用商店搜索了关于找不同玩法的游戏,不管是下载量还是口碑都是蛮不错的。
那找不同的游戏是如何实现的呢?这游戏的核心本质主要在于两点:其一是关卡数据如何快速高效地配置导出;其二是如何判定玩家是否找出2张相似图片中对应的不同之处。至于其后再引入时间限制的玩法,也只是在前面的核心玩法算法上的丰富而已。套用句古话:“万变不离其宗”。
01
游戏场景的搭建
找不同游戏的游戏界面很简单,主要由2张相似图片对象组成。你可以摆成竖向的,但我这里想把它做成横屏的游戏。游戏场景的结构组成如下图所示。
是不是很简单?嘿嘿。这个场景不仅在游戏运行时使用,也在我们可视化编辑关卡数据时运用到。
02
关卡编辑器工具实现
这类游戏一般都以关卡为单位,每个关卡又大同小异,最笨的方法是为每一个关卡新建一个游戏场景,每个场景就是一个关卡,游戏运行到某关卡时加载对应的场景,这种做法显得笨拙,扩张性和灵活性太差啦!那有木有更好的实现方法呢?答案是有的,游戏场景只有一个,当游戏进行到不同关卡时,只需加载该关卡的配置数据文件进行场景初始化即可,显然第2种方法更可取。那么要如何高效快速地配置关卡数据,这又是个问题,负责配置关卡的很可能是对代码一窍不通的某位仁兄如策划等,尽量让他们配起来爽的飞起!这是我们程序猿首要目标。这就需要写个关卡编辑工具,一个基本都是傻瓜式的界面化操作工具。
接下来介绍关卡编辑工具的实现。
关卡的数据结构:2张精灵图片、所有不同部分的位置和大小信息集合。部分核心代码截图如下。
关卡配置表结构:是关卡数据的List列表,最终导出为.asset文件保存。
接下来针对实现该编辑工具的难点进行介绍,其他的读者可下载本工程源码查看。
首先,将之前配置保存的关卡数据文件加载,如果没有则进行创建。使用AssetDatabase.LoadAssetAtPath进行加载,AssetDatabase.CreateAsset创建.asset文件,部分核心代码截图如下。
其次,是关于如何新增、删除一个关卡,实质是对关卡集合的添加、删除操作。使用levelAsset.LevelDataList.Add/RemoveAt添加新关卡或删除特定关卡,部分核心代码截图如下。
再次,是关于特定关卡的数据编辑修改。
一是关于图像的选择。使用EditorGUILayout.ObjectField可以是精灵属性变量可视化操作,部分核心代码截图如下。
二是热区对象预设对象的创建。
三是关于热区即不同点区的编辑包括创建、位置以及大小设置。实质是在游戏场景中创建一个热区对象,然后把它的位置和大小信息记录下来即可。值得注意的是,俺们这里是在打开关卡编辑界面时,预先在场景中创建了“一批”热区对象的“缓冲池”而且“管够保量”。之后只需取用即可。EditorGUILayout.Vector2Field可以将位置和大小变量可视化。关于posList和sizeList集合操作Add/RemoveAt,部分核心代码截图如下。
至此,一个相对完美的找不同游戏关卡的编辑工具大功告成!
03
核心玩法算法实现
找不同游戏的玩法还蛮简单的,这个算法主要分两个部分。一部分是游戏关卡地图的生成,另一部分是判定所有的热区是否被找到。
首先,介绍一下游戏关卡地图的生成实现。先加载当前关卡数据,根据关卡配置加载2张相似的图片,然后在两张图片上的相对位置生成相同的“透明”的热区对象即可,且这些热区对象支持点击响应操作。
部分核心代码截图如下
其次,是关于找到不同热区的检查判定。如果对应编号的热区其中一个被点击,则在这对热区对象处生成一对儿“圈圈”表示已找到。等到所有的热区都被找到,则游戏通关!
部分代码截图如下
04
结语
文章至此也就把如何制作一款比较火的找不同的游戏全过程介绍完了,如果读者有兴趣自己去做出一款高品质的找不同类型的游戏,可以在这个Demo项目工程基础上进行扩展和丰富。当然这是俺一家之言,找不同的核心玩法实现方式有很多种,只是做个抛砖引玉哈。欢迎大家评论区留言,一起交流学习!最后附上Demo工程地址:
链接:https://pan.baidu.com/s/1TK6I--DdGD__hvwhQrLdfg
提取码:iozr
--来自百度网盘超级会员V5的分享
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。