GameBuilder开发游戏应用系列之100行代码实现微信打飞机

在线预览:http://osgames.duapp.com/apprun.html?appid=osgames1-951421981197090

在线编辑:http://osgames.duapp.com/gamebuilder.php?appid=osgames1-951421981197090

微信扫描:

微信打飞机实现起来并不难,需要用到的知识点有如下几点:

  • 碰撞检测:敌机与敌机之间不检测,子弹与敌机需要检测。
  • 触摸跟随:我方飞机要根据触摸点的位置变化而变化。
  • 子弹与敌机生成:子弹需要定时发射,敌机随机生成。
  • 背景滚动:不能看出背景图片是拼接而成。

碰撞检测

  • 碰撞只能发生在刚体与刚体之间,这里的飞机是用帧动画实现的,因此需要该帧动画放在刚体内,作为刚体的子控件。子弹是图片,也要放在刚体里面。

  • 如果希望同一类型的刚体不发生碰撞,只需要在刚体属性中设置分组为同一复数即可。

触摸跟随

  • 触摸按下移动抬起,都会有对应的事件,这里只需要处理移动事件即可,根据触摸点的位置,调整飞机的位置。

    代码如下:

var win = this.getWindow();
var me = win.find("my-plane");
me.setPosition(point.x - 0.5 * me.w , point.y - 0.5 * me.h);

子弹与敌机生成

  • 子弹应该是源源不断往前发射的,因此需要一个定时器,在GameBuilder里面有对应的定制器控件UITimer。只要像一般控件一样拖进窗口里面就能用,定时周期和次数在定时器特有属性里面配置,相关代码只要写到onTimeout事件里面去即可。

  • 敌机的位置用javascript自带的Math.random()函数即可。

背景滚动

在场景里面,可以设置虚拟宽度/高度大于窗口宽度/高度,在背景图片设置为水平/垂直方向平铺,然后只要对刚体设置属性镜头跟随我,即可实现场景跟着主角滚动的效果,例子参见李先静老师的demo松鼠酷跑

但是我这里做了触摸跟随,飞机的运动时随机的,因此不适合设置镜头跟随我,那样的话场景就会上下晃动有点怪异。

我这里用另外一种方法,就是利用3张图片和一个定时器来实现。定时器onTimeout事件代码如下:

var win = this.getWindow();
var bg1 = win.find("bg-1");
var bg2 = win.find("bg-2");
var bg3 = win.find("bg-3");
var h = bg1.getHtmlImage().height;
bg1.setPosition(0, win.offset);
bg2.setPosition(0, win.offset - h);
bg3.setPosition(0, win.offset - 2*h);
win.offset += 2;
win.offset %= 2*h;

虽然整体框架实现起来不难,但是要优化的点还有很多,比如飞机加速控制,飞机随机位置控制,飞机数量控制,留给有兴趣的朋友。

时间: 2024-12-22 03:23:51

GameBuilder开发游戏应用系列之100行代码实现微信打飞机的相关文章

GameBuilder开发游戏应用系列之100行代码实现贪吃蛇

在线预览:http://osgames.duapp.com/apprun.html?appid=osgames1-801422234293697 在线编辑:http://osgames.duapp.com/gamebuilder.php?appid=osgames1-801422234293697 微信扫描: 运行截图: 除了重力感应游戏,GameBuilder开发传统的游戏也毫不逊色,作为一个怀旧的人,总是对这类游戏情有独钟. 贪吃蛇主要靠一个[UICanvas]来实现,前面一片博客GameB

GameBuilder开发游戏应用系列之100行代码实现别踩白块

在线预览:http://osgames.duapp.com/apprun.html?appid=osgames1-961421749977376 在线编辑:http://osgames.duapp.com/gamebuilder.php?appid=osgames1-961421749977376 微信扫描: 游戏截图: 别踩白块是一款非常流行的游戏,该游戏于2014年4月16日上线App Store.并在全球40多个国家.地区免费游戏榜登顶榜首[4] ,超过一百个国家或地区排名前十 ,5月份荣

GameBuilder开发游戏应用系列之50行代码实现微信漂流瓶

在线运行:http://osgames.duapp.com/apprun.html?appid=osgames1-871422195197258 在线编辑:http://osgames.duapp.com/gamebuilder.php?appid=osgames1-871422195197258 微信扫描: 运行截图: 这里实现微信漂流瓶不是真的完全实现,而是借机会介绍一下Cantk的UIFootprint控件. 漂流瓶中的网走的是一个曲线,在Cantk种可以用UIFootprint来实现,请

GameBuilder开发游戏应用系列之70行代码实现套圆环

在线预览:http://osgames.duapp.com/apprun.html?appid=osgames1-551421721381542 在线编辑:http://osgames.duapp.com/gamebuilder.php?appid=osgames1-551421721381542 微信扫描: 运行截图: 套圆环是火舞上的一款非常火爆的游戏,它是FlappyBird的变种,也是重力感应类的游戏,不同的是碰撞检测从FlappyBird的钢管,变成中间的一根绳子. 这根绳子在Game

GameBuilder开发游戏应用系列之60行代码实现FlappyBird

在线演示:http://osgames.duapp.com/apprun.html?appid=osgames1-911422256817006 在线编辑:http://osgames.duapp.com/gamebuilder.php?appid=osgames1-911422256817006 微信扫描: 运行截图: FlappyBird是2014年爆红的一款游戏,属于经典的重力感应游戏,玩法非常简单同时又非常虐心,正是这样的特点让FlappyBird得以在社交网络病毒式的传播. GameB

GameBuilder开发游戏应用系列

最近迷上了一个在线html游戏开发工具GameBuilder,作者是知名csdn博客专家李先静老师, 李老师在内核.驱动.GUI.MMI.软件设计方法和软件优化等方面均有建树,这一次的GameBuilder,是李老师基于html5画布构建的html5游戏应用开发平台中的一部分. 开发平台分为两部分: 在线开发工具GameBuilder,GameBuilder是一个可视化编程工具,游戏中的场景控件,只要鼠标轻轻一拖即可生成. GUI框架Cantk,一个开源的游戏引擎和APP框架,是开发HTML5游

GameBuilder开发游戏应用系列之Cantk窗口生命周期

Cantk中的窗口(UIWindow/UIScene)与Android的Activity等组件一样有完整的生命周期,假设我的Web应用有两个窗口:FirstWindow,SecondWindow,整个应用的生命应该如下图所示: Created with Rapha?l 2.1.2FirstWindowFirstWindowSecondWindowSecondWindow1.FirstWindow's onSystemInit called2.SecondWindow's onSystemInit

Cocos2d-x 3.x 开发(十八)10行代码看自动Batch,10行代码看自动剔除

1.概述 在游戏的运行过程中,图形的绘制是非常大的开销.对于良莠不齐的Android手机市场,绘制优化较好的游戏,可以在更多的手机上运行,因此也是优化的重中之重.图形方面的优化主要体现在减少GUP的绘制次数上.这里我们分别从自动优化渲染批次和绘制剔除两个方面来看新版本在绘制上的优化. 2.自动batch 在Cocos2d-x 3.x中,抛弃了先前手动编写BatchNode,采用自动管理的方式.说起BatchNode,就难免涉及到显卡底层的绘制原理.简单的说,每提交一条绘制指令到显卡都会产生消耗,

100行代码实现最简单的基于FFMPEG+SDL的视频播放器(SDL1.x)【转】

转自:http://blog.csdn.net/leixiaohua1020/article/details/8652605 版权声明:本文为博主原创文章,未经博主允许不得转载. 目录(?)[-] 简介 流程图 simplest_ffmpeg_player标准版代码 simplest_ffmpeg_player_suSU版代码 结果 FFMPEG相关学习资料 补充问题 ===================================================== 最简单的基于FFmp