【不是教程的教程】第四弹——小乐教你写I wanna游戏(Cocos Creator 2.2.1版本)

大家好,我是消失多年的小乐,还有人记得我不,这次又带来了新的教程了。这次来教教大家怎么用CocosCreator编写一个I wanna的游戏,由于CocosCreator物理引擎的碰撞存在点问题,而且地图的编辑上不太方便,所以这次I wanna就只实现了些简单的功能。想要实际开发I wanna游戏的话还是建议使用GameMaker,我写的这个游戏工程就作为教程来学习吧。与其说这个是教程,更像是对游戏工程的一个补充说明吧。

在B站我也用小号投稿了视频教程,内容跟本篇教程一样,如果比较喜欢看视频的话可以点击下方链接
https://www.bilibili.com/video/av80507723

首先附上一张游戏的截图,就是一个很普通的I wanna地图。

因为I wanna游戏是可以设置很多坑的,每个图块都有可能移动,所以就给每个图块单独设置刚体和物理碰撞组件。不过最初使用物理引擎时发现,在两个碰撞区域拼合处的碰撞处理存在问题,有可能导致角色卡住走不过去。我就尝试着不用物理引擎只使用碰撞组件自己做碰撞处理,然后发现依旧存在问题不好处理,例如下图这情况,当玩家下落后与方块的左上角碰撞的时候,根据水平和垂直方向的速度判断是在方块的上面还是左面,这还比较好判断,但是当方块的上面和左面存在方块时就可能出现问题了,这时的碰撞处理就得同时判断与玩家接触的多个方块的情况,这就不好处理了。就这样,我放弃自己处理的打算了,同样是存在BUG还不如用物理引擎更方便,而且以后还可能使用到物理引擎的功能,所以我又继续换回了物理引擎。最后为了解决该问题,还是选择在编辑器里另外添加物理碰撞的图层,不过有点麻烦了。

既然使用了碰撞组件,那肯定要先来看看项目分组了。下图就是该游戏的分组和碰撞的分组配对。

接下来讲讲游戏的地图设计,这里用的还是主流的第三方瓦片地图编辑器Tiled来制作地图,因为不是自带的地图编辑器,不能直接放置对象,还是很不方便的,CocosCreator要是能内置瓦片地图编辑器就好了。地图的绘制上就没啥好说的了,先来看看这些个图层的作用,如下图。其实存档点、陷阱、樱桃(也有叫苹果)、平台这些都可以直接在对象层的,设计成在图块层里画出来是为了使地图看起来比较直观点。

然后介绍下对象层的对象的自定义参数,这里做成了表格看起来方便点。

CocosCreator里的TiedMap图层的锚点我设置成了(0, 0),因为在2.2.0版本之前会导致getTiledTileAt创建的图块节点的位置偏移了。还有一些旧版本会导致的 BUG 在代码注释里会有写。

地图相关的就讲到这了,最后来讲讲脚本,首先来看看每个场景和脚本都是做啥的。

代码里我也都加了注释,应该还算挺详细的。本来想讲点脚本相关的东西,然后发现要讲的东西大部分都在注释里写好了,所以,我这里就只讲讲BOSS关卡的设计吧。

首先在BossShoot脚本里定义上三个函数,startShoot、stopShoot和shoot,在startShoot函数里开启定时器回调shoot,在stopShoot函数里停止定时器,根据自己的逻辑思维和数学知识写上设计的弹幕样式。然后在Boss脚本里定义好每个时间段的弹幕样式,开启定时器在指定的事情调用每个BossShoot的startShoot和stopShoot。最后将Boss组件和用到的所有BossShoot组件都挂到BossScene里, 设置好各个组件的参数,这样Boss关卡就搞定了。其实最关键的地方还是在弹幕的实现,不过这个我也不知道该怎么讲解,我只能说,学好数学自然就会了。

好了,教程就到这里了,有啥问题可以回复帖子。下面这个就是游戏工程的下载地址了。
百度网盘:https://pan.baidu.com/s/1DjOAbRCC7BSfbAV1PlfbmA

8赞

火钳刘明

mark mark

自顶~~~

mark

谢谢分享~~

插眼
不知道和闪影相性如何


顺便转发楼主的问题贴:14:

Thanks a lot.

谢谢分享~~

我打开你的项目,为啥跟你视频里不一样呢。

哪里不一样?

这问题还真不好搞~~~

有试过同一个物体上挂载多个碰撞器吗?

怎么个挂法?[quote=“524442330, post:14, topic:87619, full:true”]
有试过同一个物体上挂载多个碰撞器吗?
[/quote]

怎么个挂法?

不知道你有没有尝试过

我现在的项目就是挂两个,一个自身的可碰撞检测范围,一个自身的碰撞范围,被怪物监听

1赞

mark