游戏实现部分
一、游戏关卡实现
这里就只放两个关卡(其余大部分重复性,还不好看:( ),关卡设计图的草纸找不到了,就不放出来了。
初始情况下,玩家控制的胶体方块角色出现在屏幕左下角的盒子中,上方的白字是游戏当前关卡的倒计时,左上方的房子图标是返回主界面的按钮,右上方是本关卡的重新开始按钮。在这个关卡中,四周的边界被刚体覆盖,地图中有障碍物的箱子以及刚体性质的绿球,以及右下角的通关旗帜。在第一关,主要是帮助玩家熟悉各种操作,了解胶体角色的运动方式和操控效果,观察胶体角色与刚体球的碰撞效果。总的来说,第一关是所有关卡中,最简单的一关。
这关是特别设置的特殊关卡。因为游戏引用的第三方LiquidFun库也有对流体的模拟,所以又增加了一个粒子组,用来模拟水粒子,制造出水池。水池的特点是,距离水面越远,受到的阻力就越大。在本关中,玩家需操控胶体角色,进入模拟的水池中,通过水粒子的阻挡,到达右下角的终点。此关的设置,不仅仅是为了提高游戏的可玩性,还能在游戏中看到胶体和流体粒子的碰撞效果,是设置较耗费时间的一个关卡。
二、详细实现
2.1 定义重力
要创建物理世界,我们首先需要定义物理世界的重力值,定义一个力向量作为物理世界的重力值。其次,因为CocosCreator游戏引擎的结构限制,为了保证world为全局变量,能在各个场景都能使用同一个物理世界,所以将物理世界的定义放入word.js中,并将其作为插件导入项目中。代码实现如下:
var gravity = new b2Vec2(0, -10);//方向沿着Y轴竖直向下,大小为10N
window.world=new b2World(gravity,true);
var world=window.world;
2.2 物理刚体的创建
见下图所示。在物理世界已存在的情况下,所有刚体创建的瞬间即具有物理特性,成为物理世界的一部分。
2.3 物理刚体的创建
刚体又被叫做物理实体,是物理世界的基本单元。要想创建一个刚体,就需要先创建一个刚体定义类来定义这个刚体,代码实现如下:
var bd = new b2BodyDef();
var body = world.CreateBody(bd);//创建刚体
通过刚体定义类,我们能够设置刚体的初始位置,类型,旋转角度等其他属性。刚体类型有b2_staticBody、b2_kinematicBody和b2_dynamicBody三种,