Create a flash draw game like Line Rider or others – part 4

March 31st update: part 5 released

Here we go with the 4th part. Read steps 1, 2 and 3 and you’re ready to go.

In the last example in step 3 we had our bouncing ball but some of you noticed that sometimes the ball appears to be “stuck” in the ground, making some fake bounces.

Let’s understand why.

In the next movie, I created another movieclip instanced as “last_hit”.

Let’s see what happens.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
onClipEvent (load) {
	yspeed = 0;
	xspeed = 0;
	gravity = 0.2;
	radius = 5;
	friction = 0.90;
	precision = 360;
	bounces = 0;
}
onClipEvent (enterFrame) {
	if (_root.go == true) {
		collisions = 0;
		sum_x = 0;
		sum_y = 0;
		yspeed = yspeed+gravity;
		for (x=1; x<precision; x++) {
			spot_x = _x+radius*Math.sin(x*360/precision);
			spot_y = _y-radius*Math.cos(x*360/precision);
			if (_root.terrain.hitTest(spot_x, spot_y, true)) {
				collisions++;
				sum_x += spot_x;
				sum_y += spot_y;
			}
		}
		if (collisions>0) {
			_root.last_hit._x = _x;
			_root.last_hit._y = _y;
			bounces++;
			_root.collisions.text = "Bounces: "+bounces;
			ball_dir = Math.atan(yspeed/(xspeed*-1))/(Math.PI/180);
			if ((xspeed*-1)<0) {
				ball_dir += 180;
			}
			if ((xspeed*-1)>=0 && yspeed<0) {
				ball_dir += 360;
			}
			spot_x = sum_x/collisions;
			spot_y = sum_y/collisions;
			x_cat = spot_x-_x;
			y_cat = spot_y-_y;
			ball_coll = Math.atan(y_cat/x_cat)/(Math.PI/180);
			if (x_cat<0) {
				ball_coll += 180;
			}
			if (x_cat>=0 && y_cat<0) {
				ball_coll += 360;
			}
			ground_rotation = ball_coll-90;
			if (ground_rotation<0) {
				ground_rotation += 180;
			}
			bounce_angle = 180-ball_dir-2*(ground_rotation);
			if (bounce_angle<0) {
				bounce_angle += 360;
			}
			speed = Math.sqrt((yspeed*yspeed)+(xspeed*xspeed));
			xspeed = speed*Math.cos(bounce_angle*Math.PI/180)*friction;
			yspeed = (speed*Math.sin(bounce_angle*Math.PI/180))*-1*friction;
		}
		_y = _y+yspeed;
		_x = _x+xspeed;
	}
}

On lines 26-27 I assign to last_hit _x and _y the position where we checked the collision between the ball and the ground

As you can see, sometimes the black ball (last_hit) seems to “sink” in the ground, and that’s when an error may occur. If the ball sinks, and after the first bouncing frame is still inside the ground, the script will believe the ball encountered another wall and make it bounce again. Look at this picture:

Fake bounce

If the ball sinks too much into the ground, line in position 2, during the bounce may collide again with the ground causing a fake bounce.

There are several ways to fix this issue, we could check the collision again and verify if there is a fake bounce.

Remember, though, that we are already doing a quite CPU expansive task, so determining twice (or more) in a frame all fake bounces may cause the game to slow down too much.

I found a way that roughly approximates the right way to avoid fake bounces and that works well, specially if you consider we are creating a game and not an accurate simulation.

I just “remember” the last _x and _y position where there wasn’t any collision and set the collision point at that point.

The physics works in the same way, but the bounce won’t start from the ground but from the last spot the ball was sighted before it touched the wall.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
onClipEvent (load) {
	yspeed = 0;
	xspeed = 0;
	gravity = 0.2;
	radius = 5;
	friction = 0.90;
	precision = 360;
	bounces = 0;
}
onClipEvent (enterFrame) {
	if (_root.go == true) {
		collisions = 0;
		sum_x = 0;
		sum_y = 0;
		yspeed = yspeed+gravity;
		for (x=1; x<precision; x++) {
			spot_x = _x+radius*Math.sin(x*360/precision);
			spot_y = _y-radius*Math.cos(x*360/precision);
			if (_root.terrain.hitTest(spot_x, spot_y, true)) {
				collisions++;
				sum_x += spot_x;
				sum_y += spot_y;
			}
		}
		if (collisions>0) {
			_root.last_hit._x = old_x;
			_root.last_hit._y = old_y;
			bounces++;
			_root.collisions.text = "Bounces: "+bounces;
			ball_dir = Math.atan(yspeed/(xspeed*-1))/(Math.PI/180);
			if ((xspeed*-1)<0) {
				ball_dir += 180;
			}
			if ((xspeed*-1)>=0 && yspeed<0) {
				ball_dir += 360;
			}
			spot_x = sum_x/collisions;
			spot_y = sum_y/collisions;
			x_cat = spot_x-_x;
			y_cat = spot_y-_y;
			ball_coll = Math.atan(y_cat/x_cat)/(Math.PI/180);
			if (x_cat<0) {
				ball_coll += 180;
			}
			if (x_cat>=0 && y_cat<0) {
				ball_coll += 360;
			}
			ground_rotation = ball_coll-90;
			if (ground_rotation<0) {
				ground_rotation += 180;
			}
			bounce_angle = 180-ball_dir-2*(ground_rotation);
			if (bounce_angle<0) {
				bounce_angle += 360;
			}
			speed = Math.sqrt((yspeed*yspeed)+(xspeed*xspeed));
			xspeed = speed*Math.cos(bounce_angle*Math.PI/180)*friction;
			yspeed = (speed*Math.sin(bounce_angle*Math.PI/180))*-1*friction;
			_x = old_x;
			_y = old_y;
		}
		else{
			old_x = _x;
			old_y = _y;
		}
		_y = _y+yspeed;
		_x = _x+xspeed;
	}
}

Lines 62-65 assign the actual _x and _y position to a couple of variables called old_x and old_y in case the ball didn’t hit the terrain, while lines 59-60 set the _x and _y ball position to old_x and old_y. Now the ball is not on the ground so we cannot have any fake bounce.

You will notice sometimes there are about 2 or 3 pixels of error, but this can be tolerated in a game where fun is more important than simulation.

Ok, let’s resume the drawing

This is a draw game but it’s since part 1 we aren’t drawing. To put all together, I created a GO! button that will release the ball and added the drawing capability.

To do this, I changed the actions in frame 1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
go = false;
createEmptyMovieClip("terrain", 1);
terrain.lineStyle(10, 0xdd00dd, 100);
imdrawing = false;
onMouseDown = function () {
    if (imdrawing == false) {
        terrain.moveTo(_xmouse, _ymouse);
        imdrawing = true;
    }
    if (imdrawing == true) {
        onEnterFrame = function () {
            terrain.lineTo(_xmouse, _ymouse);
        };
    }
};
onMouseUp = function () {
    onEnterFrame = function () {
        imdrawing = false;
    };
};

To start drawing as seen in tutorial 1, and put this actionscript in the button

1
2
3
on (release) {
	go = true;
}

to release the ball.

Now I want to stop drawing when the “GO!” button is pressed (it would be too easy if you could draw once in game, you have to foresee the ball bounces!), and I want a “RESET!” button to start drawing again.

To reset the stage, simply add a rest button with this actionscript:

1
2
3
4
5
6
7
8
9
on (release) {
	_root.ball._x = 27;
	_root.ball._y = 47;
	_root.ball.xspeed = 0;
	_root.ball.yspeed = 0;
	_root.go = false;
	_root.terrain.clear();
	_root.terrain.lineStyle(10, 0xdd00dd, 100);
}

Lines 2-3: Reset ball position

Lines 4-5: Reset ball speed

Line 6: The go variable is set to false (the ball is not moving)

Lines 7-8: Clear the stage and start drawing again

Finally, I want to stop drawing when the ball is running… and of course I want…

The exit

I created another movieclip instanced as exit

First, let’s see how to prevent the player from drawing once the ball is going.

The actions on frame 1 are:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
go = false;
createEmptyMovieClip("terrain", 1);
terrain.lineStyle(10, 0xdd00dd, 100);
imdrawing = false;
onMouseDown = function () {
	if (!go) {
		if (imdrawing == false) {
			terrain.moveTo(_xmouse, _ymouse);
			imdrawing = true;
		}
		if (imdrawing == true) {
			onEnterFrame = function () {
				terrain.lineTo(_xmouse, _ymouse);
			};
		}
	}
};
onMouseUp = function () {
	onEnterFrame = function () {
		imdrawing = false;
	};
};

Line 6 Simply checks the go variable and let the player draw only if go is false

About the exit, the ball actionscript will be:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
onClipEvent (load) {
	yspeed = 0;
	xspeed = 0;
	gravity = 0.2;
	radius = 5;
	friction = 0.90;
	precision = 360;
	bounces = 0;
}
onClipEvent (enterFrame) {
	if (_root.go == true) {
		if (_root.exit.hitTest(_x, _y, true)) {
			xspeed = 0;
			yspeed = 0;
		} else {
			collisions = 0;
			sum_x = 0;
			sum_y = 0;
			yspeed = yspeed+gravity;
			for (x=1; x<precision; x++) {
				spot_x = _x+radius*Math.sin(x*360/precision);
				spot_y = _y-radius*Math.cos(x*360/precision);
				if (_root.terrain.hitTest(spot_x, spot_y, true)) {
					collisions++;
					sum_x += spot_x;
					sum_y += spot_y;
				}
			}
			if (collisions>0) {
				_root.last_hit._x = old_x;
				_root.last_hit._y = old_y;
				bounces++;
				_root.collisions.text = "Bounces: "+bounces;
				ball_dir = Math.atan(yspeed/(xspeed*-1))/(Math.PI/180);
				if ((xspeed*-1)<0) {
					ball_dir += 180;
				}
				if ((xspeed*-1)>=0 && yspeed<0) {
					ball_dir += 360;
				}
				spot_x = sum_x/collisions;
				spot_y = sum_y/collisions;
				x_cat = spot_x-_x;
				y_cat = spot_y-_y;
				ball_coll = Math.atan(y_cat/x_cat)/(Math.PI/180);
				if (x_cat<0) {
					ball_coll += 180;
				}
				if (x_cat>=0 && y_cat<0) {
					ball_coll += 360;
				}
				ground_rotation = ball_coll-90;
				if (ground_rotation<0) {
					ground_rotation += 180;
				}
				bounce_angle = 180-ball_dir-2*(ground_rotation);
				if (bounce_angle<0) {
					bounce_angle += 360;
				}
				speed = Math.sqrt((yspeed*yspeed)+(xspeed*xspeed));
				xspeed = speed*Math.cos(bounce_angle*Math.PI/180)*friction;
				yspeed = (speed*Math.sin(bounce_angle*Math.PI/180))*-1*friction;
				_x = old_x;
				_y = old_y;
			} else {
				old_x = _x;
				old_y = _y;
			}
			_y = _y+yspeed;
			_x = _x+xspeed;
		}
	}
}

Lines 12-14 stop the ball if it touches the exit.

Now you should be ready to create your first ball drawing game… why don’t you send me your works? I will publish on this site.

The tutorial is not over of course… we still have to see how to advance levels, how to change the ball with a car or a guy, and so on.

Meanwhile, download source codes and give me feedback, then proceed to part 5

Rate this post: 1 Star2 Stars3 Stars4 Stars5 Stars (18 votes, average: 4.94 out of 5)
Loading ... Loading ...
If you found this post useful, please consider a small donation.
» Flash Templates provided by Template Monster are pre-made web design products developed using Flash technology.
They can be easily customized to meet the unique requirements of your project.

72 Responses to “Create a flash draw game like Line Rider or others – part 4”

  1. Steve on March 5th, 2007 11:05 am

    Is it just me, or are the movies not loading?

    But anyway, nice tut man! Can’t wait for the rest!

  2. Ben on March 5th, 2007 12:08 pm

    Just a quickie to note that I love the tutorials and can’t wait to see more from you. Thanks a lot for putting the time into these – they’re most appreciated.

  3. mousey on March 5th, 2007 6:04 pm

    ACE, what will we be learning to do inthe next tutorial?

  4. Alex on March 5th, 2007 11:27 pm

    why do some of the tutorials not work in other versions of flash

  5. Greg on March 6th, 2007 9:38 am

    Those ‘2 or 3 pixels of error’ are quite pronounced in my version if I increase the size of the ball and the radius associated with it. I’ve noticed it is worse when the collision detection takes place on the left hand side of the ball with steep line slopes. Flat lines and ones that go up and to the right seem to work alright. Any suggestions? Thank you!

  6. abhilash on March 6th, 2007 11:12 am

    Hey man nice tut cant wait for the next

  7. byitdude on March 7th, 2007 5:54 am

    hey,whats the actionscript to make to ball move when Go is clicked?

  8. abhilash on March 8th, 2007 9:23 am

    in reply to byitdude:
    code for the button(‘GO’) is

    on(release) {
    go=true;
    }
    put this code in the button u make.
    **************************************
    my problem:
    with me, everything is alright except the reset button when I press the button the ball stops where it is & when the GO button is again pressed it falls with the power it had before the RESET was pressed. PLEASE HELP

  9. tim on March 8th, 2007 9:25 am

    Hurry up and post part 5 as fast as you can, i just cant wait

    oh and by the way the game still needs alot of work, the ball wont roll, it just bounces

  10. Freaky-freak-freaker on March 11th, 2007 1:26 am

    Hey, in one of these, can you maybe show us how to make it so that if the character or ball hits the grounds too hard, it resets? I would like that for a future game of mine.

  11. ISA 4 Te Win on March 13th, 2007 11:59 pm

    i fink the games sucks

  12. I Need Help on March 15th, 2007 2:27 am

    lol it works fine but maybe a moving shadow and when u have like 5 bounces and hit reset it errases ur lines and stuff but it still has 5 bounces

  13. eblup on March 15th, 2007 2:29 am

    you know the ball can ride the line and not bounce if you put the ball like a car and have it fase the angle of the line you det det de

  14. martin on March 15th, 2007 12:14 pm

    hi can some on help me when the ball touches the box how can you make it go onto another frame if some one can help iot will be much appreciated

  15. uhhhhhh on March 15th, 2007 5:00 pm

    eblup what hapnes when you change angle?? and its de de u dee

  16. mnmn on March 15th, 2007 5:01 pm

    isa i dont “fink” these games suck

  17. hey on March 15th, 2007 10:38 pm

    can u guys post another game but do it more spectific and post the easy game and short..? thank you help me plz

  18. hey on March 15th, 2007 10:42 pm

    my problem is i dont know how to do the wall. plz post for me another simple game and short or u guys can teach me how to do the wall ore bountri plz help thank you

  19. Smartz on March 17th, 2007 10:13 pm

    Once again, great tut! 2 Problems:
    1: The ball never stops moving.
    2: This is supposed to be a linerider game, not a ball bouncing game…;-)
    Keep up the good work!

  20. jordanleffl on March 18th, 2007 8:57 am

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    MARTIN:
    hi can some on help me when the ball touches the box how can you make it go onto another frame if some one can help iot will be much appreciated
    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    just put in collision with exit:

    gotoAndStop(2)

    2 refering to what frame :-)

  21. martin on March 18th, 2007 4:49 pm

    so what you say jordanleffl all you have to do is put gotoAndStop(2) on the exit and that is it

  22. Kieron on March 19th, 2007 10:16 pm

    Yes Martin. Where you have your hit test for the exit, simply add “gotoAndStop(‘frame_number’)”. But… If you are testing if the ball hits in the exits actions, then you need “_root.gotoAndStop(‘frame number’)”. So, root on the exit, no root on the frame. Makes sense?

  23. martin on March 21st, 2007 4:17 pm

    i am a begginer at flash and can someone give me the hit test i need you all have been helpful thanks

    please check out my website

  24. Julianrocks on March 22nd, 2007 9:10 pm

    WOW! I Love this! I mad a quick little game out of this…
    http://img221.imageshack.us/my.php?image=linebouncerdp0.swf

    I cant wait for part five!

  25. fatattak on March 28th, 2007 12:42 pm

    hey i love the tutorials, but was wondering how do you make the object roll or slide on the line instead of bounce?

  26. gabssnake on March 29th, 2007 8:28 am

    hey, this is just great. I’m goona use some of what I learned here in a project for my college. keep it up, I’ll be checking!!!

    regards,

  27. Jordan on April 15th, 2007 4:34 am

    ty very much i made a pretty cool game because of this tut.

  28. Daniel on April 20th, 2007 9:15 am

    In Adobe Flash Or Macromedia ????

  29. Fire on April 23rd, 2007 10:50 pm

    how do u stop the ball from flying off the screen without having to draw a box while in game?

  30. Derrick Niehaus on April 25th, 2007 2:10 am

    BAHAHAHAHH someone stole your tutorial completely and made it into a game.. here
    thats so funny! they didnt even change the line color.. or get rid of the bouce counter.. or the circle where the ball had been

  31. N00b on May 10th, 2007 6:23 pm

    How do you get rid of the part that shows the last bounce and the bounces count?
    I have an idea but I always encounter many errors!
    I’ve also made an artillery game and it works! I’m really pleased and the tutorials are amazing!
    Much thanks! ^^

  32. Darth Turtle on May 16th, 2007 8:22 am

    For some reason, My game lags a lot. When i try to draw, sometimes the line doesn’t show up.
    Can someone help me?
    Oh and by the way, I’m using Flash MX educational.

  33. abhilash on May 19th, 2007 6:13 am

    in reply to darth turtle:
    check the frame rate of the movie.To do that just press CTRL J
    and change the FPS(frames per second)

  34. E th on May 19th, 2007 11:58 am

    **Error** Line 1: Clip events are permitted only for movie clip instances
    onClipEvent (load) {

    **Error** Line 10: Clip events are permitted only for movie clip instances
    onClipEvent (enterFrame) {

  35. abhilash on May 29th, 2007 11:51 am

    in reply to Eth:
    I think you have copied action script given for the ball to the frame.
    ~~~~~~~~~~~~~~~~~~~~~~~~~~
    For everybody:
    To rotate the ball just add
    “_rotation = xspeed;” below the
    “_x = _x xspeed;” in the ball AS

  36. E th on June 9th, 2007 2:22 am

    Yeah, actually how DO you get rid of the ball count? lol

  37. Todd Clark on July 15th, 2007 10:50 am

    Finally, drawn line collisions. I don’t know if you realize that this is probably one of a very few places that has a tutorial about this. Screw vector based tile grids for collisions. Now I can finally have very dynamic point to point coordinates for walls, etc.. instead of the complex tiles and endless modularity. Good job being awesome.

  38. Marius on July 26th, 2007 5:03 pm

    Thanks again for your great tutorial! But I’d like to see how one can make the ball ROLL down a line without bouncing… How can it be done? Thanks

  39. Carl on August 5th, 2007 8:39 am

    Hi! Thanks for your tutorials, they’re the best, I’m sooo excited making my little ball game hehe ^^ but I’m facing one trouble when I want to make a thing for two balls, and one of them start to float in space.. really strange. Do I have to change the variable names or something? Thanks again!

  40. Carl on August 8th, 2007 6:46 pm

    Actually got that one allready, and voila! my game’s finished! :) If you (or someone else)’d like to download it, it’s here: http://rapidshare.com/files/47444843/_Pelota_.exe
    //it’s in spanish :)

  41. SlimJim on November 17th, 2007 3:20 am

    We got a thousand and nine Bounces

  42. Dalez on November 19th, 2007 7:34 pm

    Hey, this is a great tut! But how do you make it slide down the line and not bouce? All so, how do you make it so you can rub a bit of the line out?
    Also, one more question… how do you make it so that you can move over to the next screen with with a hand? Like the real Linerider, where you click the hand and you can move the frame a bit down. Thanks very much, and very good tut!

  43. Alexis on November 24th, 2007 10:02 pm

    I love this website it is so cool to just watch funny falling and i wish it was cartoon guy playing it and color while the guy is trying your sled jump and your the best!!!!!!!!

  44. jithin on December 30th, 2007 2:53 pm

    i want a car to collide with a line

  45. thinkquick on February 24th, 2008 11:15 am

    I notice this game (“paintball”) is almost identical to your concept : http://www.newgrounds.com/portal/view/346873

    Although, looks like it was a year earlier.

  46. Gamitude on February 28th, 2008 10:09 am

    You could also get around the fake bounce problem by checking for collisions ahead:

    (…)
    posX = _x + (radius*Math.cos(x*(360/precision))) + xspeed;
    posY = _y + (radius*Math.sin(x*(360/precision))) + yspeed;
    if(_root.object.hitTest(posX,posY,true)){
    (…)

  47. theman on April 9th, 2008 7:47 pm

    how do you get the ball to reset. I can get mine to stop, but not reset.

  48. Ninjakannon on July 30th, 2008 8:55 pm

    Your general method here is good, and does work – this is one of the few places that explains how to do this. However, your code NEEDS optimisation! You talk about efficiency but miss blindingly obvious opportunities for this.

    You repeat calculations, replace things like ‘x*360/precision’ with a variable so you don’t have to calculate twice. Also, why convert to degrees? Do all the calculations in radians and you can remove a few calculations.

    Oh, I suggest commenting your code instead of explaining the lines underneath – just a thought.

  49. Emanuele Feronato on July 30th, 2008 9:36 pm

    you’re right ninja… I’ll publish a “revamped” version soon

  50. Ninjakannon on July 31st, 2008 5:39 pm

    Emanuele! I’ve created a more efficient version of your simple bouncing off the terrain code.

    I knew something was wrong with all those if statements you had to change the angle around. Then the solution came to me… Use Math.atan2!

    Instead of using, for example, Math.atan(yspeed/(xspeed*-1)) all you need is Math.atan2(yspeed, -xspeed). If you use that, you won’t need to change the angles around.

  51. julian on August 28th, 2008 9:04 am

    how do i make walls
    for the ball to bounce on
    and you need to try and get the ball around the walls?

  52. Frozen Chrome Entertainment on August 31st, 2008 9:30 pm

    This is great, however i think i missed the part where i get to make a car, not a ball. Im imagining making loading a car as a MC but then the car will bounce like a ball. So therefore i think this tutorial was for a game like softball, and not line rider, so can you please tell me how to make line rider please? I’m not trying to be mean, the way i typed this sounds mean though.

  53. Bob on September 15th, 2008 8:57 pm

    I made this game and i added walls (you can see it at my site) But if the ball starts going fast enough the ball goes straight through the line.

  54. Bob on September 15th, 2008 9:00 pm

    my site is http://www.freewebs.com/mygamesrawsom/
    sorry i forgot to post it

  55. Luke on September 28th, 2008 4:09 pm

    I found a solution for all the people who want to reset bounces when you click reset.

    Add this coding into the reset button:
    on (release) {

    _root.ball.bounces = 0;
    _root.collisions.text = “Draw the terrain then click GO!”;

    So the code will look like this after you add it:

    on (release) {
    _root.ball._x = 27;
    _root.ball._y = 47;
    _root.ball.xspeed = 0;
    _root.ball.yspeed = 0;
    _root.go = false;
    _root.terrain.clear();
    _root.terrain.lineStyle(10, 0xdd00dd, 100);
    _root.ball.bounces = 0;
    _root.collisions.text = “Draw the terrain then click GO!”;
    }

  56. some1 who needs help on October 3rd, 2008 8:16 pm

    I can´t make the game stop painting when go is pushed. I copied the code but cant get it work:
    it still draws when go is pushed…
    Please help me

  57. some1 who don`t needs help on October 5th, 2008 6:51 pm

    I solved it myself: it was the shadow layer.
    I dont know what it does but when I removed it everything worked. XD

  58. black Dragon on February 3rd, 2009 10:47 am

    oh…coolll

  59. Cleveland_King23 on February 9th, 2009 6:20 pm

    Okay so I downloaded the source files and editted them to my liking, but when i added walls and obsticles to get around, everytime i clicked the mouse to draw lines the lines are drawn but not where im clicking. If anyone knows how to fix this glitch it would be appreciated.

  60. rednek on February 15th, 2009 2:09 pm

    I can hardly describe the awesomeness of this tutorial Emanuele, thanks a lot!

    Is it possible to make the ball stop at some point? This is never ending bounce, I am reading the code over and over and still can’t come to solution :C

  61. Jordan Power on October 20th, 2009 5:23 pm

    Every Thing Works But How Would You Make It That When You Hit The Finish It Goes To Another Frame?

Leave a Reply




Trackbacks

  1. Create a flash draw game like Line Rider or others - part 1 at Emanuele Feronato on March 4th, 2007 7:31 pm

    [...] March 4th update: part 4 released February 17th update: part 3 released February 3rd update: part 2 released [...]

  2. Create a flash draw game like Line Rider or others - part 2 at Emanuele Feronato on March 4th, 2007 7:31 pm

    [...] March 4th update: part 4 released February 17th update: part 3 released [...]

  3. Create a flash draw game like Line Rider or others - part 3 at Emanuele Feronato on March 4th, 2007 7:31 pm

    [...] March 4th update: part 4 released [...]

  4. Flash game creation tutorial - part 5.3 at Emanuele Feronato on March 14th, 2007 12:52 pm

    [...] var s_sid = 29714;var st_dominio = 4; var cimg = 330;var cwi =112;var che =62; « Create a flash draw game like Line Rider or others – part 4 [...]

  5. Create a flash draw game like Line Rider or others - part 5 at Emanuele Feronato on March 31st, 2007 12:12 am

    [...] You should read steps 1 to 4 before continuing with this one, although this time it’s not so important, because before to approach the “running car” I am going to explain the “walking man” on a line. [...]

  6. Do my tutorials suck? at Emanuele Feronato on April 25th, 2007 1:01 pm

    [...] Today Derrick Niehaus, a blog reader, sent me this comment in Line Rider creation game tutorial 4: [...]

  7. Create a flash draw game like Line Rider or others - A different approach at Emanuele Feronato on June 15th, 2007 2:44 pm

    [...] I was reviewing parts three and four of your line rider tutorials today because I had never tried out your collision and reaction techniques for myself, when I found some things I didn’t like. [...]

  8. Managing ball vs ball collision with Flash at Emanuele Feronato on August 19th, 2007 12:31 pm

    [...] Why are we checking if balls are already in collision? Because we want an elastic collision, and an elastic collision must occour only at a distance of 30 pixels. Unfortunately, we can’t check the distance between balls in a continuous time, but only every 1/framerate seconds, so in most cases we miss the moment when two balls start colliding… in most cases the collision begins when a ball overlayed another one and we have to avoid “fake bounces” as the ones explained in Create a flash draw game like Line Rider or others – part 4… so the entire process is an approximation of a real elastic collision, but this won’t affect gameplay. [...]

  9. linerider game on June 3rd, 2008 5:31 pm

    [...] game, not a ball bouncing game??- Keep up the good work! jordanleffl Mar 18, 2007 Reply …http://www.emanueleferonato.com/2007/03/04/create-a-flash-draw-game-like-line-rider-or-others-part-4…linerider.netlinerider.net. Search the Web: Rider. Play Games. Super … game Card. Win Cash. Super [...]

  10. 50 Ways to Make us HATE your Flash Game | The Helion Code on July 18th, 2008 3:38 pm

    [...] a game from a tutorial and submit it without making any kinds of [...]

  11. 50 Ways to Make Us HATE Your Flash Game | Mr Sun Studios on July 26th, 2008 7:13 pm

    [...] a game from a tutorial and submit it without making any kinds of [...]

flash games company