手机游戏真是好玩到不行,每次都让人爱不惜手,就像是那款疯狂的火爆鸟儿,完全停不下来。告诉你个好消息,只要利用HTML5平台上的lua legend库和box2d web物理引擎,你就能自己动手做一款超级棒的甚至可以与《愤怒的小鸟》相媲美的游戏。现在马上行动起来,我来详细教你如何制作!
准备工作一
首先,照惯例,先删掉那个叫LuffyLegends的1.4.1库,没它玩儿不成这个物理游戏。别忘,接着装个Box2dWeb物理引擎,那可是咱们项目里的宝贝!
想要熟练运用luvylegend库?以前的攻略和教程说的清清楚楚的,再加上API说明,你肯定能搞定!只要学会基础操作,做项目就变得简单多!
function Bird(){ base(this,LSprite,[]); var self = this; var bitmap = new LBitmap(new LBitmapData(imglist["bird1"])); self.addChild(bitmap); }
准备工作二
backLayer = new LSprite(); addChild(backLayer); bird = new Bird(); bird.rotate = 0; bird.x = 200; bird.y = 430; bird.yspeed = -5; backLayer.addChild(bird);
作者忘了把Box2dWeb加入代码里了,得自己给lufylegend-1.4.1打个补丁才能玩这个物理小游戏。快点去下那个插件文件,下次更新就能用上整合好的1.5版本!别急着动手,先搞清楚步骤再开始~
LTweenLite.to(bird,1, { x:100, yspeed:5, delay:1, rotate:-360, onUpdate:function(){ bird.y += bird.yspeed; }, onComplete:function(){ start(); }, ease:Sine.easeIn } );
做好了上述准备工作后,现在让我们跟随作者一步步地进行尝试。
一、旋转飞起的小鸟
咱们动手造只小鸟模型呗~你要是有啥不明白的地方,就都直接看我给你写的这部分代码就行了。听过那款《愤怒的小鸟》吗?还记不记得小鸟起飞的时候,弹弓摇摇晃晃的样子?其实那个效果是用Lutyen Lite这款缓动类实现的!
快来学学LTweenLite,随心所欲控制小鸡的各种属性,想飞多快就飞多快,不过别忘记在onUpdate里设置适当的移动命令
bitmap = new LBitmap(new LBitmapData(imglist["slingshot1"])); bitmap.x = 215; bitmap.y = 290; backLayer.addChild(bitmap); bird = new LSprite(); bird.name = "bird01"; backLayer.addChild(bird); bitmap = new LBitmap(new LBitmapData(imglist["bird1"])); bird.addChild(bitmap); bitmap = new LBitmap(new LBitmapData(imglist["slingshot2"])); bitmap.x = 190; bitmap.y = 290; backLayer.addChild(bitmap);
二、弹出的小鸟
下面,我们给小鸟旁边添个弹弓玩儿呗!然后,这几行代码就能把弹弓变成俩部分了,这样你想让小鸟往哪飞就拖到哪儿。
记着小鸟在哪儿等,然后轻点左键,那就是你的弹弓的起点了。小心地挪动一下鼠标,使瞄准器对准那儿。然后,稳住心神,轻轻拉动弹弓,记住,小鸟可不能溜走!位置和方向都别弄错~
backLayer.addEventListener(LMouseEvent.MOUSE_DOWN,downStart); startX = bird.x + bird.getWidth()*0.5; startY = bird.y + bird.getHeight()*0.5;
最后,用box2dweb给咱们的小鸡加了点好玩的功能~只要你的鼠标往上一提,小鸡会嗖的一下挺直身子,是不是超有趣?轻轻一推的话,小鸡就直接展翅飞往蓝天!这么一来,你可以随心所欲地移动小鸡,而且还能随时随地让它飞起来,真是太棒了!
下面是关键部分,要深入了解就看看代码哈。下回咱们说说如何做出很棒的碰撞效果,以及怎样让镜头跟随小鸟飞翔得更灵活起来。别忘了一直关注我们
function downStart(event){ if(event.offsetX > bird.x && event.offsetX bird.y && event.offsetY < bird.y + bird.getHeight()){ backLayer.removeEventListener(LMouseEvent.MOUSE_DOWN,downStart); backLayer.addEventListener(LMouseEvent.MOUSE_MOVE,downMove); backLayer.addEventListener(LMouseEvent.MOUSE_UP,downOver); } }
。
评论0