想必大家小时候都听说过或玩过4399小游戏( 这句话好像暴露了年龄 ),在当时电脑不算很普及,且没有那么多网游、大型单机游戏的时代,数量众多且种类丰富的网页小游戏使我们的童年增添了非常多的乐趣。 诸如 黄金矿工,狂扁小朋友

这些耳熟能详的小游戏, 在当时都是由Adobe公司下的Flash动画标准来开发的 。可在 2017 年时Adobe公司宣布 ,出于安全和可靠性的原因,将于 2020 年年底, 也就是今年内正式停止支持Flash 。 Flash

是 20 多年前诞生多,它曾是开发者们最受青睐的技术之一,被用于开发游戏,播放视频在各大浏览器中,如今已成为时代的眼泪, 取而代之的便是HTML 5+ JavaScript技术 。 在这里向大家安利一下当今比较热门的前端渲染引擎PixiJS(github收藏30k),它使用了HTML5+JS+WebGL封装而成,是一个非常强大的2D渲染引擎,可以用十分高效的性能来完成当年Flash所能完成的游戏开发任务。

下面,我们便用PixiJS来制作一个简单的网页小游戏。 该游戏的玩法很简单, 控制我们的角色,躲避怪物,获取宝箱拿到出口处便可获得胜利

步骤1

:首先,我们需要制作好游戏所需的图像素材,如下图:

JavaScript写小游戏教程_javascript小游戏


上图中把该小游戏中的所有素材:角色,宝箱,怪物,出口都整合到了一张图中,然后通过一个JSON数据文件(该文件内保存了各个素材的大小和位置)来从图片中获取你想要的素材。

JavaScript写小游戏教程_java小游戏代码及素材_02


步骤2

: 在js代码中导入上述的图片和JSON文件 。 接着调用PixiJS的API , 创建一个PixiJS应用 ,即我们的游戏舞台, 再执行setup函数对游戏进行初始化。

JavaScript写小游戏教程_webgl 游戏_03


步骤3

:在setup初始化函数中,创建两个游戏场景,因为游戏分为游戏中的场景和游戏结束时的场景。

JavaScript写小游戏教程_JavaScript写小游戏教程_04

JavaScript写小游戏教程_JavaScript写小游戏教程_05

JavaScript写小游戏教程_javascript小游戏_06


根据JSON文件分别提取出图片中的素材,放置到场景一中。  

JavaScript写小游戏教程_JavaScript写小游戏教程_07


步骤4

:循环创建多个怪物在场景一中,并随机赋予它们初始位置和速度,干扰玩家获取宝箱。

JavaScript写小游戏教程_java小游戏代码及素材_08


步骤5

:制作血条,当玩家碰撞到怪物时便会损失一定的血量,血条为空则游戏结束,展示场景二。  

JavaScript写小游戏教程_java打怪物小游戏代码_09


步骤6

:绑定键盘事件,这里给出了左方向键的实现方式,其他方向同理。  

JavaScript写小游戏教程_javascript小游戏_10


步骤7

:做好上述准备后,便调用play函数使游戏开始,该函数将会被每秒执行60次(这得益于webGL强大的性能),直到游戏结束


JavaScript写小游戏教程_javascript小游戏_11

JavaScript写小游戏教程_java打怪物小游戏代码_12


  步骤8

:在play函数中,主要功能为: (1)监听键盘事件,改变玩家的位置。  

JavaScript写小游戏教程_java小游戏代码及素材_13


(2)监听怪物的位置变化,当怪物碰撞到墙时会直接朝着反方向移动。  

JavaScript写小游戏教程_java打怪物小游戏代码_14


(3)碰撞检测: ① 检测玩家是否碰撞到怪物。碰到则临时改变透明度并减少血量,当血量小于0时则游戏结束  

JavaScript写小游戏教程_javascript小游戏_15

JavaScript写小游戏教程_java小游戏代码及素材_16

JavaScript写小游戏教程_java小游戏代码及素材_16

JavaScript写小游戏教程_webgl 游戏_18


② 玩家是否碰撞到宝箱。当玩家碰到宝箱时,宝箱将跟随玩家一起移动。  

JavaScript写小游戏教程_webgl 游戏_19

JavaScript写小游戏教程_java打怪物小游戏代码_20


③ 宝箱是否碰撞到出口。当宝箱碰到出口,即玩家带着宝箱到出口时,游戏结束。  

JavaScript写小游戏教程_java打怪物小游戏代码_21


完成了上面的代码,一款简单的网页小游戏就做好了,最终效果如下图所示。

JavaScript写小游戏教程_java打怪物小游戏代码_22