When Elasticity meets Bloons
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?
Tell me what do you think about this post. I'll write better and better entries.
They can be easily customized to meet the unique requirements of your project.
11 Responses to “When Elasticity meets Bloons”
Leave a Reply

nice I can realy use this in my games
Hello Emanuele Feronato
ive been following up on these tutorials for a while and i wanted to email you what i have produced but i have forgotten your email.
And i love this game so far such a simple engine yet so much fun.
This is an awesome idea!
Make some nice graphics and levels and you may get the same popularity as Bloons!
Yeah, and get a good sponsor :) Then you rock! Good concept!
Great concept! It will be game more popular than circle chain perhaps…
Tom: mail it at info[at]emanueleferonato.com
Emanuele your homepage is still crashing my computer. I came to see if you’d replied to my comment, and the same message came up. Then I read your comment, went back to the homepage, and it crashed again. I had to close firefox and restart the session, then it crashed again, but I just managed to make it here to report this. I think it may be one of your adverts…
@Ed : I think that the problem is caused by too many flash on the main page (sometimes I get a pop-up that asks me to ’stop’ the scripts running on that page, which should be caused by the flash ‘examples’ showing on the main page). Other than that, it may be caused by too many things to load on a page too.
Very nice game idea! Wish I thought of it myself.
Great Game! It’s fun and looks promising.
Just so Ed doesn’t look like he’s making this up, I have had Firefox crash when visiting here a few times recently as well.
Great site though, I check daily :).