Quantcast
Channel: Emanuele Feronato | RSS Feed
Viewing all articles
Browse latest Browse all 2

When Elasticity meets Bloons

$
0
0

Ok, so we have two games: Elasticity and Bloons.

The first, is a game I talked about in Controlling a ball like in Flash Elasticity game tutorial, and I suggest you to read it, while the second is a game we all use to play here on planet Earth.

Despite the psychedelic feeling I gave to the graphics in this prototype, merging two game genres like Bloons and Elasticity can lead to some interesting gameplay concepts.

So the prototype brings the “engine” of Elasticity and some targets to destroy like in Bloons.

No tutorial yet but only a commented actionscript

attachMovie("newmouse", "newmouse", _root.getNextHighestDepth());
attachMovie("circle", "circle", _root.getNextHighestDepth(), {_x:60, _y:350});
attachMovie("crosshair", "crosshair", _root.getNextHighestDepth());
attachMovie("ball", "ball", _root.getNextHighestDepth());
Mouse.hide();
// friction
friction = 0.9;
// multiplier to scale down ball speed
speed_scale = 0.1;
// ball x and y speed
xspeed = 0;
yspeed = 0;
// flag to determine if the ball is "free" (I released it) or not
free_ball = false;
// gravity is zero at the beginning
gravity = 0;
// this part has been already explained
newmouse.onEnterFrame = function() {
	this._x = _root._xmouse;
	this._y = _root._ymouse;
};
crosshair.onEnterFrame = function() {
	difference = (circle._width-crosshair._width)/2;
	this._x = _root._xmouse;
	this._y = _root._ymouse;
	dist_x = this._x-circle._x;
	dist_y = this._y-circle._y;
	distance = Math.sqrt(dist_x*dist_x+dist_y*dist_y);
	if (distance>difference) {
		angle = Math.atan2(dist_y, dist_x);
		this._x = circle._x+difference*Math.cos(angle);
		this._y = circle._y+difference*Math.sin(angle);
	}
};
ball.onEnterFrame = function() {
	if (!free_ball) {
		dist_x = (crosshair._x-this._x)*speed_scale;
		dist_y = (crosshair._y-this._y)*speed_scale;
		xspeed += dist_x;
		yspeed += dist_y;
	} else {
		if (this._y>500) {
			free_ball = false;
			gravity = 0;
			xspeed = 0;
			yspeed = 0;
			this._x = crosshair._x;
			this._y = crosshair._y;
			friction = 0.9;
		}
	}
	xspeed *= friction;
	yspeed *= friction;
	yspeed += gravity;
	this._x += xspeed;
	this._y += yspeed;
};
// if the player release the mouse, then
// the ball is set to free
// the friction is lower and
// the gravity is bigger
_root.onMouseDown = function() {
	free_ball = true;
	friction = 0.99;
	gravity = 0.3;
};
// adding some "bloons"...
for (x=0; x<8; x++) {
	for (y=0; y<8; y++) {
		bloon = _root.attachMovie("bubble", "bubble_"+x, _root.getNextHighestDepth(), {_x:250+x*30, _y:30+y*30});
		bloon.die = false;
		bloon.onEnterFrame = function() {
			// actions to perform if the bloon is "alive"
			if (!this.die) {
				dist_x = this._x-ball._x;
				dist_y = this._y-ball._y;
				distance_from_ball = Math.sqrt(dist_x*dist_x+dist_y*dist_y);
				// checking if the ball hits the bloon
				if (distance_from_ball<(this._width+ball._width)/2) {
					this.die = true;
				}
				// actions to perform if the bloon is "dead" 
			} else {
				this._width -= 1;
				this._height -= 1;
				this._alpha -= 2;
				if (this._alpha == 0) {
					this.removeMovieClip();
				}
			}
		};
	}
}

And this is the result, swing the ball with the mouse and press mouse button to throw it against the “bloons”.

How many shoots do you need to bloon… pardon blow all balls away?

Download source code

Want to learn more? Learn by example!

Get the full commented source code of an actual commercial cross platform HTML5 game!!


Viewing all articles
Browse latest Browse all 2

Latest Images

Trending Articles





Latest Images