html5泡泡龙游戏开发随笔

来源:互联网 发布:文件编辑软件 编辑:程序博客网 时间:2024/05/01 12:37

由于刚刚入职,上一款游戏开发已经进入尾声,所以在下一款游戏到来之前的一段时间,做了一个泡泡龙的游戏。在做这款小游戏时候,发现里面的逻辑还是挺多的,所以在此记录一下开发过程中比较重要的点。
用到的技术,html5 canvas PIXI.JS游戏引擎,js开发
1. 发射小球与上方球的碰撞检测处理。
方法:
① 发射球开始运动时,让其与每一个上方的小球进行圆心距离判断,当距离为2个半径时,那么我们认为发生碰撞,让他停止运动。
② 停止了不代表真的可以停止。因为我们要确保每一个小球周围的位置都是固定的,所以我们要对停止的小球进行位置调整。
用一个函数来获取碰撞时,与发射球碰撞小球周围的6个位置坐标,判断发射球的坐标与那6个坐标距离,哪个距离近,我们就把小球移动到最近的那个坐标位置。

  1. 发生碰撞时,要给一个力,让被撞到或者间接撞到的球有一个弹动
    方法:
    递归两次,确保发射球碰到的球,以及这个被碰到的球的周围的球,发生相应弹动。弹动方向就是发射球与这个球的延长线上

  2. 碰撞成功之后,我们需要判断是否消除的问题
    方法:
    小球对象设置一个属性canPop,属性默认设置为false。这时我们要递归这个发射球,如果这个发射球周围6个位置有和他相同的颜色,那么把这个小球标记为canPop,同时递归这个球。(切记被递归过得不能再递归),最后遍历所有小球,如果canPop为true >=3,那么消除这几个球。

4.消除之后,还有判断是否处于未连接状态的小球
方法:
获取最顶端小球的数组,对这些球分别向下递归,递归到的就标记为处于连接状态,当所有球遍历一遍,那些处于未连接状态的就可以消失了。

5.给发射球添加辅助线,碰到边界要折回来
方法:
这个线是若干点组成,这些点的X坐标要放到一个数组中,每个点的X坐标就是前一个点的X坐标+xxx(根据点与点间距获得每个点X坐标间距离)。当某个点的坐标碰到边界,那么这个点的X坐标位置为这个边界对面镜像位置,同时后面的坐标就是X坐标+(-xxx).
两边边界方法一样。

由于此demo在其他项目上直接写的,还没有单独抽取出来,所以源代码暂时不上传了。。有什么问题欢迎交流。
效果展示

效果展示
效果展示

0 0
原创粉丝点击