Create a Flash Racing Game Tutorial – AS3 version
The porting of the most popular AS2 tutorials continues with a basic AS3 version of the Flash racing game script.
I said “basic” because it does not have all features, this time it covers only movement and collision detection because I want to add more features before polishing it.
In the detail, I am developing an artificial intelligence algorithm to include cars controlled by the computer.
Meanwhile, this is the main class
1 2 3 4 5 6 7 8 9 10 11 12 | package { import flash.display.Sprite; public class racing extends Sprite { public var car:car_mc; public var ground:ground_mc = new ground_mc(); public function racing():void { car = new car_mc(450,300); addChild(ground); addChild(car); } } } |
And this is car_mc class:
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 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 | package { import flash.display.Sprite; import flash.events.Event; import flash.events.KeyboardEvent; import flash.geom.Point; public class car_mc extends Sprite { public var acceleration:Number=0.4; public var speed_decay:Number=0.96; public var rotation_step:Number=10; public var max_speed:Number=10; public var back_speed:Number=1; public var speed:Number=0; public var accelerate,brake,turn_left,turn_right:Boolean=false; public function car_mc(posx:int,posy:int):void { x=posx; y=posy; addEventListener(Event.ADDED_TO_STAGE,init); } public function init(e:Event):void { addEventListener(Event.ENTER_FRAME,on_enter_frame); stage.addEventListener(KeyboardEvent.KEY_DOWN,on_key_down); stage.addEventListener(KeyboardEvent.KEY_UP,on_key_up); } public function on_enter_frame(e:Event):void { if (accelerate&&speed<max_speed) { speed+=acceleration; } if (brake&&speed>-1) { speed-=back_speed; } var speed_x:Number=Math.sin(rotation*0.0174532925)*speed; var speed_y:Number=- Math.cos(rotation*0.0174532925)*speed; if (turn_left) { rotation -= rotation_step*(speed/max_speed); } if (turn_right) { rotation += rotation_step*(speed/max_speed); } y+=speed_y; x+=speed_x; var point_left:Point=new Point(-9,0); var point_right:Point=new Point(9,0); var point_front:Point=new Point(0,-13); var point_back:Point=new Point(0,13); point_left=localToGlobal(point_left); point_right=localToGlobal(point_right); point_front=localToGlobal(point_front); point_back=localToGlobal(point_back); var par:racing=this.parent as racing; if (par.ground.hitTestPoint(point_left.x,point_left.y,true)) { rotation+=5; speed*=0.85; } if (par.ground.hitTestPoint(point_right.x,point_right.y,true)) { rotation-=5; speed*=0.85; } if (par.ground.hitTestPoint(point_front.x,point_front.y,true)) { speed*=0.55; } if (par.ground.hitTestPoint(point_back.x,point_back.y,true)) { speed*=0.55; } if (Math.abs(speed)>0.3) { speed*=speed_decay; } else { speed=0; } } public function on_key_down(e:KeyboardEvent):void { if (e.keyCode==38) { accelerate=true; } if (e.keyCode==40) { brake=true; } if (e.keyCode==37) { turn_left=true; } if (e.keyCode==39) { turn_right=true; } } public function on_key_up(e:KeyboardEvent):void { if (e.keyCode==38) { accelerate=false; } if (e.keyCode==40) { brake=false; } if (e.keyCode==37) { turn_left=false; } if (e.keyCode==39) { turn_right=false; } } } } |
And this is the result
Play with arrow keys, and be prepared to race against CPU
They can be easily customized to meet the unique requirements of your project.















(43 votes, average: 4.58 out of 5)









This post has 35 comments
DaveUCSD
You could not have posted this at a better time. Yesterday I started converting you last tutorial to AS3 and I was going to work on it all day today and tomorrow. I am using it for a biofeedback application in a neuroscience lab.
Thank you so much!!!!
DaveUCSD
PS. What is your creative commons license for this? Can I use it for non-profit?
Praveen Ojha
Static car and rotating ground wud give even more better effect like old nes roadfigter .
Alexandre Colella
I didn’t understand de Points and the par variable…
:(
Can you explain? :)
Emanuele Feronato
Use it as you please, just remember to buy me a beer should you make billions out of it
Emanuele Feronato
It will be the topic of next Flash tutorial
Alexandre Colella
Ok! Thanks!!!!
Wilson Silva
You never disappoint us :) Are you going to make a tutorial like “Create a Flash game like Zelda” or something? I’m pretty sure that most of us want to know how to develop a good RPG game engine. And you my friend, are the best person to teach us :D. Pleeeease.
gino80
Emanuele you are great!!
thank you very much for your tutorials!!
how can I implement a sort of ghost car??
thank you keep the good work!!
Create a Flash Racing Game Tutorial – Artificial stupidity - Emanuele Feronato
[...] Create a Flash Racing Game Tutorial – AS3 version [...]
Someone
Hey,
There’s a bad glitch if you go backwards into the wall… can you please show how to fix it?
Thanks. =)
Amos
Im planning on learning flash sometime and its interesting for me to look at this code, just to get a sense of how actionscript works. thanks :)
Also, i have been using a program called scratch, which basically is for creating some very simple games, with very simple code. Quite a while ago, i made a game similar to this: http://scratch.mit.edu/projects/aonews/289090
and just fyi, in case any of you where planning on looking at the code, you should know i made it a few years ago, and the code is rather redundant and could be simplified a lot. :)
Amos
i might also its quite easy to cheat in my game :)
DaveUCSD
haha :)
Mina
if i could ask , iam new in game Dev. iam tring to make a car game , and iam stuck with something maybe u could help me out ………..
i made a MovieClip car >> inside it AS3.0 code of all its speed accelirationa and stuff .. i didnt use pacage because i dont know much about it … anyway , i made a square on the stage and i was tring to detect the collition by HittestObject and it didnt work , someone gave me a link for a bitmap data and it worked but i dont understand it for sure .. i just replaced names … anyway … right now , i wants to write a function that makes the car Never move over or under that square .. like a wall or a building … i couldnt figure it out , could u help me plz , it sounds like insanly easy ..
sarah
the ground is the green one right?
sarah
could you make a tutorial as3 for a car race with no lap and an AI??
Flex4?????? Flex 4 Racing Game,????? | LuFree Blog-??????,?????,?????,webgame??
[...] AS3??:http://www.emanueleferonato.com/2010/06/16/create-a-flash-racing-game-tutorial-as3-version/ [...]
Marcel
I got this error message:
“Type was not found or was not a compile-time constant: ground_mc
race.as line 8″
Seems like should be another class called ground_mc?
(sorry for my English and newbie question)
anushi
please can you tell me to open this fla file. I can not open it. Thank you
Sam
Wondered if you have any turoirals on how to add laptimes into the AS3 Verison…
johanson
how can you add laps and times for this game?
sorry i’m very new to flash.
Attila Kamasz
Hy all!
The tutorial is very good, but I dont know how I scripting the drifting and other advanced car psichic. Pls help me. Thanks :)
OA
I was messing around trying to add different tracks but the only way is for the track to be erased so how can we change the track without just erasing from the back ground and without the ground_mc
3D car with a camera that follows it (Adobe Flash Platform Blog)
[...] understand the car’s movement let’s do a little bit of math. I’ve got inspired by this tutorial and this one. But anyway, there is no rocket science involved. Just a simple trigonometric [...]
3D car with a camera that follows it — FlashRealtime.com
[...] understand the car’s movement let’s do a little bit of math. I’ve got inspired by this tutorial and this one. But anyway, there is no rocket science involved. Just a simple trigonometric [...]
car » Blog Archive » 3D car with a camera that follows it — FlashRealtime.com
[...] know a car’s transformation let’s do a small bit of math. I’ve got desirous by this tutorial and this one. But anyway, there is no rocket scholarship involved. Just a elementary trigonometric [...]
Tutorial: 3D Car With A Camera Following It
[...] understand the car’s movement let’s do a little bit of math. I’ve got inspired by this tutorial and this one. But anyway, there is no rocket science involved. Just a simple trigonometric [...]
Hassan Ayoub
Dear geek,
thx for your tutorials, however, when can we exppect the full version of the game?
Second, do u know books or video tutorials where they teach game developments especially car racing games?
Thx in advanced
John
This is Really great. Is there a way to control the number of Laps? How could I make it 3 instead of 10?
Greg
Thanks for the great racing game. Could you post or email a description of what the different lines of code are doing like you did in the AS2 version?
Harris
You STole the as2 version from gamesheep
LuLu
Hi, I have created a short animation storyboard and would like to incorporate this mini-game at the end (e.g. frame 2885), can it be done? If yes, how do I do it?
Akhyar
GREAT Tutorial! i’m started to understand how to make as3 games… never thought that it will requires trygonometry though..
Christoffer
Do you have a tutorial on how to make the laptimer in as3? Or is it very similiar to the as2 version?
Otherwise, great tutorial. Thanks ;)