http://www.51h5.com/game-index-id-604.html_html/css_WEB-ITnose
Jun 24, 2016 am 11:48 AM
Online preview: http://osgames.duapp.com/apprun.html?appid=osgames1-551421721381542
Online editing: http://osgames.duapp.com/gamebuilder.php ?appid=osgames1-551421721381542
WeChat scan:
Running screenshot:
Ring Set is a very popular game on Huowu, it is a variant of FlappyBird , is also a gravity sensing game. The difference is that the collision detection changes from FlappyBird's steel pipe to a rope in the middle.
This rope is implemented in GameBuilder using UICanvas. UICanvas was introduced in the previous blog GameBuilder Development Game Application Series: 100 Lines of Code Implementation Don’t Step on the White Block.
Because the rope here is drawn, you cannot use Cantk's onBeginContact interface for detecting collisions between rigid bodies. Instead, use the onMoved interface of the ring (rigid body) to detect collision with the rope.
Calculation of the rope
win.onLineMoved = function() { if(win.gameStarted === 0) { setTimeout(win.onLineMoved, 20); return; } win.points.shift(); ++win.count; ++win.score; if(win.score % 10 === 0) win.find("score").setText(win.score * 0.1); var oy = win.points[win.points.length - 1]; if(win.count % 400 === 0) { win.factor = win.genFactor(); win.count = 0; } var y = oy + win.factor; while(y >= 290 || y <= 110) { win.factor = win.genFactor(); y = oy + win.factor; win.count = 0; } win.points.push(y); setTimeout(win.onLineMoved, 20);};
Drawing of the rope
win.drawCirclePath = function(ctx){ var pa = win.points; ctx.lineWidth = 20; ctx.strokeStyle = 'yellow'; ctx.moveTo(0, pa[0]); for(var i = 1; i < pa.length; i++) { ctx.lineTo(i, pa[i]); } ctx.stroke();};
Composition of the ring
The ring is composed of two rigid bodies , concentrate one under the UICanvas (the yellow one).
Collision detection
Implement the onMoved event interface of the ring.
win.onCircleMoved = function(point, element) { var y = point.y; var x = Math.floor(point.x + element.w); if(y + 55 > win.points[x] + 200 || y + element.h - 50 < win.points[x] + 200) { win.gameStarted = 0; win.find("ui-box").setEnable(false); win.find("ui-box-1").setEnable(false); win.openWindow("win-result", function() {win.replay(); win.initGame();}, false, Math.floor(win.score * 0.1)); }};

Hot Article

Hot tools Tags

Hot Article

Hot Article Tags

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics

Difficulty in updating caching of official account web pages: How to avoid the old cache affecting the user experience after version update?

How do I use HTML5 form validation attributes to validate user input?

What is the purpose of the <iframe> tag? What are the security considerations when using it?

How to efficiently add stroke effects to PNG images on web pages?

What is the purpose of the <meter> element?

What are the best practices for cross-browser compatibility in HTML5?

What is the purpose of the <datalist> element?

What is the purpose of the <progress> element?
