PDA

View Full Version : [AS3] racing game code problems


damo_j
03-19-2009, 04:17 PM
hi, im pretty new to flash. im making a racing game in as3. Ive got most of it working now, but some some reason the car wont turn well. i wanrt a shaper turing circle, ive played about with the numbers in the code but noughting seems to work.

the car did turn fine untill i made it go faster with the, var a:Number = ;
is was set at 0.9 but i changed it to 6 so im gussing theres somthing in my code that needs changing but i cant work it out.

oh and another thing the car hero 2 i set new buttons for on the keyboard as its a 2 player game, but it wont move so not sure what ive done wrong there.

also i need a health bar that when the cars get hit or crash they lose health, ive created a health bar but it wont do what i want it to.

heres my full code,


//import some important flash libraries.
import flash.events.KeyboardEvent;
import flash.events.Event;
import flash.display.MovieClip;

//hero
//initializes variables.
var a:Number = 6;
var vx:Number = 4;
var vy:Number = 8;
var dir:int = 0;
var friction:Number = 1;
var piover180:Number = Math.PI /180;

var key_left:Boolean = false;
var key_right:Boolean = false;
var key_up:Boolean = false;
var key_down:Boolean = false;

//hero2
//initializes variables.
var a2:Number = 0.5;
var vx2:Number = 0;
var vy2:Number = 0;
var dir2:int = 0;
var friction2:Number = 0.9;
var piover1802:Number = Math.PI /180;

var key_left2:Boolean = false;
var key_right2:Boolean = false;
var key_up2:Boolean = false;
var key_down2:Boolean = false;

//Checks if the player presses a key.
stage.addEventListener(KeyboardEvent.KEY_DOWN,KeyD own);
stage.addEventListener(KeyboardEvent.KEY_UP,KeyUp) ;

//Lets the function main play every frame.
addEventListener(Event.ENTER_FRAME,Main);

// Init
var hero = new Hero();
addChild(hero);
hero.x=hero.x+150;
hero.y=hero.y+150;
var hero2 = new Hero2();
addChild(hero2);
hero2.x=hero2.x+50;
hero2.y=hero2.y+50;
//create the function main.
function Main(event:Event){
CheckKeys();
MoveHero();
CheckKeys2();
MoveHero2();
}

//create the function KeyDown.
function KeyDown(event:KeyboardEvent){
if(event.keyCode == 37){ //checks if left arrowkey is pressed.
key_left = true;
}
if(event.keyCode == 39){ //checks if right arrowkey is pressed.
key_right = true;
}
if(event.keyCode == 38){ //checks if up arrowkey is pressed.
key_up = true;
}
if(event.keyCode == 40){ //checks if down arrowkey is pressed.
key_down = true;
}
}

function KeyUp(event:KeyboardEvent){
if(event.keyCode == 37){ //checks if left arrowkey is released.
key_left = false;
}
if(event.keyCode == 39){ //checks if right arrowkey is released.
key_right = false;
}
if(event.keyCode == 38){ //checks if up arrowkey is released.
key_up = false;
}
if(event.keyCode == 40){ //checks if down arrowkey is released.
key_down = false;
}
}

function CheckKeys(){
if(key_left){
hero.rotation -= 1*dir;
hero.leftwheel.rotation = Math.min(24,Math.max(-24,hero.leftwheel.rotation-20));
hero.rightwheel.rotation = Math.min(24,Math.max(-24,hero.rightwheel.rotation-20));

} else if(key_right){
hero.rotation += 1*dir;
hero.leftwheel.rotation = Math.min(24,Math.max(-24,hero.leftwheel.rotation+20));
hero.rightwheel.rotation = Math.min(24,Math.max(-24,hero.rightwheel.rotation+20));
} else {
hero.leftwheel.rotation=4;
hero.rightwheel.rotation=4;
}
if(key_up){
dir = 3;
} else if(key_down){
dir = -3;
} else {
dir = 0;
}
}

function MoveHero(){

vx *= friction;
vy *= friction;
hero.x += Math.sin(hero.rotation*piover180)*a*dir;
hero.y -= Math.cos(hero.rotation*piover180)*a*dir;

}

//create the function KeyDown.
function KeyDown2(event:KeyboardEvent){
if(event.keyCode == 65){ //checks if left arrowkey is pressed.
key_left2 = true;
}
if(event.keyCode == 68){ //checks if right arrowkey is pressed.
key_right2 = true;
}
if(event.keyCode == 87){ //checks if up arrowkey is pressed.
key_up2 = true;
}
if(event.keyCode == 88){ //checks if down arrowkey is pressed.
key_down2 = true;
}
}
function KeyUp2(event:KeyboardEvent){
if(event.keyCode == 65){ //checks if left arrowkey is released.
key_left2 = false;
}
if(event.keyCode == 68){ //checks if right arrowkey is released.
key_right2 = false;
}
if(event.keyCode == 87){ //checks if up arrowkey is released.
key_up2 = false;
}
if(event.keyCode == 88){ //checks if down arrowkey is released.
key_down2 = false;
}
}

function CheckKeys2(){
if(key_left2){
hero2.rotation -= 1*dir2;
hero2.leftwheel.rotation = Math.min(24,Math.max(-24,hero2.leftwheel.rotation-5));
hero2.rightwheel.rotation = Math.min(24,Math.max(-24,hero2.rightwheel.rotation-5));

} else if(key_right2){
hero2.rotation += 1*dir2;
hero2.leftwheel.rotation = Math.min(24,Math.max(-24,hero2.leftwheel.rotation+5));
hero2.rightwheel.rotation = Math.min(24,Math.max(-24,hero2.rightwheel.rotation+5));
} else {
hero2.leftwheel.rotation=0;
hero2.rightwheel.rotation=0;
}
if(key_up2){
dir2 = 1;
} else if(key_down2){
dir2 = -1;
} else {
dir2 = 0;
}
}

function MoveHero2(){

vx *= friction2;
vy *= friction2;
hero2.x += Math.sin(hero2.rotation*piover180)*a*dir2;
hero2.y -= Math.cos(hero2.rotation*piover180)*a*dir2;

}

rrh
03-20-2009, 04:34 PM
Well, what is 'a' for? It's used in the x+= and y+= statements, and looks like it will increase the moving speed, not the turning speed. You want to change the turning speed you need to look at where the turning is being done:
hero2.rotation += 1*dir2;