var bx = 250,by=40;
var box01,box02;
box01 = new LSprite();
box01.x = bx;
box01.y = 30;
backLayer.addChild(box01);
box01.addBodyCircle(10,0,0,0,1,10,0.2);
linelist = [box01];
for(var i=0;i<20;i++){
box02 = new LSprite();
box02.x = bx;
box02.y = by+i*10;
backLayer.addChild(box02);
box02.addBodyCircle(10,0,0,1,1,10,0.2);
LGlobal.box2d.setRevoluteJoint(box02.box2dBody, box01.box2dBody );
linelist.push(box02);
box01 = box02;
} hero = new LSprite(); var bit = new LBitmap(new LBitmapData(imglist["chara03"])); bit.x = -25; bit.y = -20; hero.addChild(bit); hero.bitmap = bit; hero.x = bx; hero.y = by+i*10; backLayer.addChild(hero); hero.addBodyPolygon(30,50,1,2,10,.2); joinline = LGlobal.box2d.setRevoluteJoint(hero.box2dBody, box01.box2dBody );
backLayer.addEventListener(LEvent.ENTER_FRAME,onframe); backLayer.addEventListener(LMouseEvent.MOUSE_DOWN,ondown); backLayer.addEventListener(LMouseEvent.MOUSE_UP,onup);
function ondown(event){
if(out)return;
monseIsDown = true;
mouseObject.x = event.offsetX;
}
function onup(event){
if(out)return;
monseIsDown = false;
LGlobal.box2d.world.DestroyJoint(joinline);
hero.bitmap.bitmapData = new LBitmapData(imglist["chara04"])
hero.bitmap.x = 0;
hero.bitmap.y = 0;
out = true;
} backLayer.graphics.clear();
backLayer.graphics.drawRect(1,"#000000",[0,0,LGlobal.width,LGlobal.height]);
for(var i=0;i<linelist.length - 1;i++){
backLayer.graphics.drawLine(2,"#000000",[linelist[i].x,linelist[i].y,linelist[i+1].x,linelist[i+1].y]);
} if(monseIsDown && !out){
if(checkIndex++ > 10){
checkIndex = 0;
if(LGlobal.offsetX - mouseObject.x > 50){
var force = 50;
var vec = new LGlobal.box2d.b2Vec2(force,0);
hero.box2dBody.ApplyForce(vec, hero.box2dBody.GetWorldCenter());
}else if(LGlobal.offsetX - mouseObject.x < -50){
var force = 50;
var vec = new LGlobal.box2d.b2Vec2(-force,0);
hero.box2dBody.ApplyForce(vec, hero.box2dBody.GetWorldCenter());
}
mouseObject.x = LGlobal.offsetX;
}
} if(!out)return;
backLayer.x = LGlobal.width*0.5 - hero.x;
if(backLayer.x > 0){
backLayer.x=0;
}
LGlobal.box2d.synchronous();
if(!hero.box2dBody.IsAwake() && out){
backLayer.removeEventListener(LEvent.ENTER_FRAME,onframe);
point = Math.floor((hero.x - 250)*0.1);
var rank = new GameRanking();
backLayer.addChild(rank);
} 而非debug模式下,就成了下面的界面了。
三,源码
最后给出本次游戏的源代码
http://lufylegend测试数据/lufylegend_download/box2dJump.rar
注:只含游戏源码,lufylegend.js引擎和box2dweb引擎请看准备部分自己下载
以上就是抽出1个小时制作一款简单的物理小游戏(绳子原理)的内容,更多相关内容请关注PHP中文网(HdhCmsTestgxlcms测试数据)!
查看更多关于抽出1个小时制作一款简单的物理小游戏(绳子原理)的详细内容...
声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did65563