发布网友 发布时间:2022-04-23 15:03
共9个回答
懂视网 时间:2022-04-20 07:32
前天公司聚会,在一起玩游戏,游戏虽然及其简单,但是却很适合在活动中玩,因为公司参加聚会的人比较多,所以只有一部分人玩到了。晚上回家后我试着将其中一款游戏用html5还原了一下,第二天给大家玩儿,在公司的人气爆火,尤其女生,边玩边叫,“おもしろい!!”,“難しい!!”...。一般大家看到女生喜欢,肯定急切想知道是什么游戏吧?游戏界面如下。
看到游戏界面后,估计有几个人已经摔倒在地了吧,就是一个及其简单的物理游戏,游戏开始后,按住鼠标左右划动屏幕,主人公就好像荡秋千一样,越荡越高,等适当的时候松开鼠标,将主人公荡出去,谁飞出去的最远,谁就获胜。
其实,越是这样简单短小的游戏,越是适合聚会这样的活动中玩,尤其加上排名系统后,大家也会想要排名靠前一些,而争着去玩儿。
游戏测试连接:
http://lufylegend.com/demo/box2dJump
注意:本游戏纯粹是抽了一个小时左右时间随便给公司同事娱乐一下而做的,画面和效率等都没经过优化,请用PC打开,移动端运行起来估计会卡死
制作开始
游戏中用到了两个引擎
一个是HTML5开源引擎lufylegend.js,下面是我在博客的lufylegend-1.7.0发布帖,里面有简单的介绍
http://blog.csdn.net/lufy_legend/article/details/8719768
另一个是Box2dWeb,下载地址如下
http://code.google.com/p/box2dweb/downloads/list
从游戏界面中可以看到,游戏开发的重点就是一条绳子,在HTML5中如何来实现绳子呢?
在box2d中是没有绳子的,但是熟悉box2d的朋友们,应该对旋转关节setRevoluteJoint不陌生,实现绳子的话,我们可以把一连串的刚体用旋转关节连接在一起,这样这些刚体摆动起来的话,就跟绳子差不多了。
看下面的代码,我把1个静态的刚体和20个动态的刚体用旋转关节连接到了一起。
代码清单1
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; }
最后,在加上一个稍微大一点的刚体,来作为游戏中的主人公,并且也用旋转关节跟前面的刚体连接起来。
代码清单2
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 );
这样就差不多了,剩下的就是如何来控制主人公的摇摆和飞出去,这时候需要三个事件。
代码清单3
backLayer.addEventListener(LEvent.ENTER_FRAME,onframe); backLayer.addEventListener(LMouseEvent.MOUSE_DOWN,ondown); backLayer.addEventListener(LMouseEvent.MOUSE_UP,onup);
上面代码中onframe函数是时间轴,ondown和onup分别是鼠标按下和弹起时调用的事件,鼠标按下和弹起比较简单,代码如下。
代码清单4
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; }
onframe函数里基本上包含了游戏的所有逻辑部分。
首先,前面制作的“绳子”是没有皮肤的,也就是说除非debug模式,否则是不显示的,那么就要在绳子摆动的时候,顺着这些刚体绘制出一条曲线,就变成了绳子了,代码如下。
代码清单5
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]); }
接着,是让绳子摆动,判断鼠标是否左右晃动,分别向左或者向右给刚体加上一个力,来让刚体动起来,代码如下
代码清单6
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; } }
最后,在鼠标弹起的时候,由于主人公被弹飞了出去,所以让游戏窗口跟着他一起动起来就可以了。
代码清单7
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模式下预览一下,可以看到我们制作的“绳子”其实就是一串刚体
而非debug模式下,就成了下面的界面了。
最后给出本次游戏的源代码
http://lufylegend.com/lufylegend_download/box2dJump.rar
注:只含游戏源码,lufylegend.js引擎和box2dweb引擎请看准备部分自己下载
热心网友 时间:2022-04-20 04:40
工具/原料
纸筒
绳子,白纸,彩笔,剪刀,胶水,铅笔
将杯子底部打两个小孔,保证绳子能穿过去,然后打结。
尽量使用更长的棉线。 棉线越长,声音才能传得越远。棉线拉得越直,声音才能听得越清晰。当声音受到阻碍时,就不能继续传播。
物理原理:
传声筒是利用固体声波振动传递原理,当声源在传声筒的一端发生震荡时,纸杯的物理结构能有效地将声音聚集并且减少声音的扩散,经过中间的绳子最后传进另一端的纸杯中。
拓展资料:
传声筒亦称"传话筒",是一种古老的具有实用性和娱乐性的工具,由中国人最先发明,是电话机最初的原型。《清稗类钞》中详细记载了传声筒制造方法。而其制造原理可能是受到了“听瓮”的影响。
听瓮:《墨子·备穴》中对听瓮的制造和使用方法有详细的说明。也就是最迟发明于中国战国时期,距今2500年。在后来的使用过程中,听瓮得到了不断的改进,成为现代*出现前最有效的窃听工具。沈括《梦溪笔谈·器用》中记载了这种*
传声筒亦称"传话筒",是一种古老的具有实用性和娱乐性的工具,由中国人最先发明,是电话机最初的原型。《清稗类钞》中详细记载了传声筒制造方法。而其制造原理可能是受到了“听瓮”的影响。
听瓮:《墨子·备穴》中对听瓮的制造和使用方法有详细的说明。也就是最迟发明于中国战国时期,距今2500年。在后来的使用过程中,听瓮得到了不断的改进,成为现代*出现前最有效的窃听工具。沈括《梦溪笔谈·器用》中记载了这种*。
参考链接:百度百科-传声筒
热心网友 时间:2022-04-20 05:58
制作方法:
1、取两个完好的纸杯,再取一根适当长度的棉线,一把小刀。
2、将木棍切成适当长度,用于放入杯中,所以木棍长度要比杯底宽度小一点就可以了。然后,将纸杯底部戳开一个小孔,不要太大。将棉线一段塞入,并从杯口取出,再将棉线拴在木棍上。同样,将棉线的另一端也同样操作,一个简单的传声筒就做好了。
传声筒是利用固体声波振动传递原理,当声源在传声筒的一端发生震荡时,纸杯的物理结构能有效地将声音聚集并且减少声音的扩散,经过中间的绳子最后传进另一端的纸杯中。
拓展资料
传声筒亦称"传话筒",是一种古老的具有实用性和娱乐性的工具,由中国人最先发明,是电话机最初的原型。《清稗类钞》中详细记载了传声筒制造方法。而其制造原理可能是受到了“听瓮”的影响。
听瓮:《墨子·备穴》中对听瓮的制造和使用方法有详细的说明。也就是最迟发明于中国战国时期,距今2500年。在后来的使用过程中,听瓮得到了不断的改进,成为现代*出现前最有效的窃听工具。沈括《梦溪笔谈·器用》中记载了这种*
参考资料来源:百度百科-传声筒
热心网友 时间:2022-04-20 07:33
制作方法:
准备小刀、纸杯、一团棉线、小木棍或火柴棍;准备好两个完好的纸杯,再准备好一根适当长度的棉线,一把小刀。
将木棍切成适当长度,放入杯中,木棍长度要比杯底宽度小一点就可以了。然后,将纸杯底部戳开一个小孔,不要太大。
将棉线一段塞入,并从杯口取出,再将棉线拴在木棍上。同样,将棉线的另一端也同样操作,一个简单的传声筒就做好了。
传声筒原理:传声筒利用物体的传送波德原理,把声波通过绳子之类的东西传输出去,如果其中有物体阻断,声波会沿着物体改变方向,无法正常到达目的地。
地方习俗
用“传声筒”对话(亦称“打土电话”),是云南省保山市潞江坝傣家少男少女特有的一种“爱情游戏”。
春节期间,天真烂漫的小卜冒、小卜哨们总爱把自己收拾得花骨朵似的,来到一些约定俗成的“老地方”聚合。
参考资料:传声筒 百度百科
热心网友 时间:2022-04-20 09:24
制作方法:
1、取两个一次性纸杯,再取一根适当长度的细线,一把小刀,一根小木棍。
2、将木棍切成适当长度,用于放入杯中,所以木棍长度要比杯底宽度小一点就可以了。然后,将纸杯底部戳开一个小孔,不要太大。将细线一段穿入,并从杯口取出,再将细线拴在木棍上。同样,将细线的另一端也重复上述步骤,将两个杯子用细线连起来,一个简单的传声筒就做好了。
物理原理:
传声筒是利用固体声波振动传递原理,当声源在传声筒的一端发生震荡时,纸杯的物理结构能有效地将声音聚集并且减少声音的扩散,经过中间的绳子最后传进另一端的纸杯中。
拓展资料:
使用方法:
1、两个人各拿一个话筒,拉直棉线,就可以通话了。
2、一人在话筒开口说,另一人在话筒开口边用耳听。声音就可以通过棉线振动远距离传过来。(距离在一百米范围内皆可有效。)
参考资料:
百度百科:传话筒
热心网友 时间:2022-04-20 11:32
准备2个纸杯,1根长棉线,火柴棒若干。将2个杯子底用针打个小孔,保证棉线能穿过去,不能太大,面线的两端分别从杯底穿到杯子内部,然后打结,也可以将在杯子内线打在一段火柴棒上以防止线脱落。
棉线越长,声音才能传得越远。棉线拉得越直,声音才能听得越清晰。当声音受到阻碍时,就不能继续传播。比如用一块纸团把纸杯完全堵住时,就不能听见别人说话的声音了。
拓展资料:传声筒是根据声音能传播的原理制成的。当声源在传声筒的一端发生震荡时,纸杯的物理结构能有效地将声音聚集并且减少声音的扩散,经过中间的绳子最后传进另一端的纸杯中,所以打电话的两个人才能听见对方的声音。
热心网友 时间:2022-04-20 13:57
材料:准备两个一次性塑料杯或者纸杯,还有一条长的棉线。热心网友 时间:2022-04-20 16:38
找两个纸杯,一根适当长的线,每个纸杯的底部钻一个小孔,然后将线的两端分别穿过两个小孔打个结,就成了。两个人,每人手持一个纸杯,一个将纸杯放在耳部,一个对着纸杯说话,传声功能算是实现了。热心网友 时间:2022-04-20 20:10
h jws jus j s j s死死生生,我们的生活方式是什么时候回来呢。我是什么时候回家呀?我们的人生轨迹就是这样吧……你就不要把门开完后才回来、的歌曲很好用又来了没有时间了?我们的人生就是说自己喜欢💕?我在外面玩手机📱?我在这里的生活状态就是我现在的生活状态就是我们生活