别忘了下载Lufylegend-1.4.0和Box2dweb~
想在网上搞点物理玩具玩耍?那就赶紧下小程序「Lufylegend-1.4.0」和「Box2dweb」!先说「Lufylegend-1.4.0」这个神奇的HTML5做游戏小程序,功能强大到爆表。再来说说「Box2dweb」,这东西可是让你的虚拟世界变身为现实的关键~用好这两大法宝,你就能轻松踏出探索物理世界的第一步了哟~
2.准备图片素材
要让电脑帮咱们造实物,得找做三张图:一个圆、一个长方块和一个三角形。这几个简单图形会在游戏中变成各种玩意儿,让你看清它们在现实世界中的特点!
3.利用LLoadManage类读取图片
开始搭建物理世界了吗?别急,让我们先用Lufylegend.js中的LLoadManage类读取之前已经准备好的图片。这玩意儿能帮咱们快速加载游戏所需内容,确保一打开就让玩家看到各种各样的元素!
init(10,"mylegend",800,400,main); var backLayer,cLayer,wallLayer,bitmap,loadingLayer; var imglist = {}; var imgData = new Array( {name:"bird1",path:"./images/bird1.png"}, {name:"bird2",path:"./images/bird2.png"}, {name:"stage01",path:"./images/stage01.png"} ); function main(){ LGlobal.setDebug(true); backLayer = new LSprite(); addChild(backLayer); loadingLayer = new LoadingSample3(); backLayer.addChild(loadingLayer); LLoadManage.load( imgData, function(progress){ loadingLayer.setProgress(progress); }, function(result){ imglist = result; backLayer.removeChild(loadingLayer); loadingLayer = null; gameInit(); } ); }
4.创建四堵控制墙
首先,我们要为硬固体建个家,用静态矩形限制它们的活动范围。这样在游戏中,我就可以安心地玩耍了,不用担心它们跑出来捣乱!而在现实世界里,一切还是那么正常,依然跑跳自如!
5.添加圆形刚体
搞定基础架构之后,就开始给我们的游戏加点料!让我们先来试下加个圆圆的小球,只需要用addBodyCircle这个方法,立马就能在你选中的地方搞出个毛茸茸的东西,趁热乎儿去看看它在现实中是啥样子。
wallLayer = new LSprite(); wallLayer.x = 400; wallLayer.y = 0; backLayer.addChild(wallLayer); wallLayer.addBodyPolygon(800,10,0); wallLayer = new LSprite(); wallLayer.x = 0; wallLayer.y = 200; backLayer.addChild(wallLayer); wallLayer.addBodyPolygon(10,400,0); wallLayer = new LSprite(); wallLayer.x = 400; wallLayer.y = 400; backLayer.addChild(wallLayer); wallLayer.addBodyPolygon(800,10,0); wallLayer = new LSprite(); wallLayer.x = 800; wallLayer.y = 200; backLayer.addChild(wallLayer); wallLayer.addBodyPolygon(10,400,0);
6.添加矩形刚体
赶紧试试!不只是圆形,我们还可以做方形。此时可以通过addBodyPolygon方法把方形加上去,再设置好像素等参数,你们就可以欣赏到方形和其他物体碰撞的效果~
7.添加三角形刚体
backLayer.addEventListener(LMouseEvent.MOUSE_UP,add);
试完圆的、方的之后,咱还能试试加点三角或是更复杂点儿的多边形!在LSprite里用addBodyVertices这招儿就搞定了。记得别忘了解决那些小破事儿,然后就可以随心所欲地给那些多边形身体添进物理世界!
8.调试与优化
cLayer = new LSprite(); cLayer.x = 50 + Math.random()*700; cLayer.y = 50; backLayer.addChild(cLayer); bitmap = new LBitmap(new LBitmapData(imglist["bird1"])); cLayer.addChild(bitmap); cLayer.addBodyCircle(bitmap.getWidth()*0.5,bitmap.getHeight()*0.5,bitmap.getWidth()*0.5,1,.5,.4,.5);
搞定刚体形状之后,咱们得把整个物理世界弄得更好,把调试模式关了,排查一下问题,再修复修正。至于各个刚体属性,稍微调节一下,让游戏运行更流畅、更真实
9.游戏测试与发布
搞定搞定了真实世界的事儿,看过无误后,终于能让你们试试玩我们的游戏。把精心设计的世界分享出去,听听大家意见,这样才能做得更好。
var rand = Math.random(); if(rand < 0.5){ cLayer = new LSprite(); cLayer.x = 50 + Math.random()*700; cLayer.y = 50; backLayer.addChild(cLayer); bitmap = new LBitmap(new LBitmapData(imglist["bird1"])); cLayer.addChild(bitmap); cLayer.addBodyCircle(bitmap.getWidth()*0.5,bitmap.getHeight()*0.5,bitmap.getWidth()*0.5,1,.5,.4,.5); }else{ cLayer = new LSprite(); cLayer.x = 50 + Math.random()*700; cLayer.y = 50; backLayer.addChild(cLayer); bitmap = new LBitmap(new LBitmapData(imglist["stage01"])); cLayer.addChild(bitmap); cLayer.addBodyPolygon(bitmap.getWidth(),bitmap.getHeight(),1,5,.4,.2); }
。
评论0