Код AS1/AS2:
var v:Number = 0;// Cкорость
var vX:Number = 0;//Горизонтальная скорость
var vY:Number = 0;//Вертикальная скорость
var Ug:Number = 0;// Угол поворота машинки вокруг своего центра в радианах
var usk:Number = 0.1;// Ускорение машинки
var KoefTreniya = 0.95;//Коээффициент трения. Действует, если не нажаты клавиши управления машинкой
var speedUp:Number = 0.9;// Скорость разгона (чтобы машинка не двигалась резко с места)
var decay:Number = 0.9;//Константа затухания скорости (действует, когда не нажата клавиша SPACE)
var maxV:Number = 20;//Максимальная скорость машинки
var perX:Number = 300;// Для хранения в памяти координат машинки по оси Х
var perY:Number = 300;// Для хранения в памяти координат машинки по оси Y
_root.onEnterFrame = function() { //Вызов функций, выполняющихся при каждой смене кадра
dvMC(); // вызов функции движения машинки
};
function dvMC() { // Движение машинки
if (Key.isDown(Key.SPACE)) { //Разгон машинки
usk += 0.1;
} else { // Если клавиша Key.SPACE не нажата, замедление
usk *= 1-decay;
if (usk<0.1) {
usk = 0.1;
}
}
// Движение вперед
if (Key.isDown(Key.UP)) {
v += usk;
//Умножаем на скорость разгона, чтобы скорость не менялась резко
vX = speedUp*v*Math.cos(Ug);
vY = speedUp*v*Math.sin(Ug);
// Поворот влево во время движения вперед
if (Key.isDown(Key.LEFT)) {
Ug -= 0.04;
}
// Поворот вправо во время движения вперед
if (Key.isDown(Key.RIGHT)) {
Ug += 0.04;
}
}
// Движение назад
if (Key.isDown(Key.DOWN)) {
v -= usk;
vX = v*Math.cos(Ug);
vY = v*Math.sin(Ug);
// Поворот влево во время заднего хода
if (Key.isDown(Key.LEFT)) {
Ug -= 0.02;
// Торможение при заднем повороте
vX *= KoefTreniya;
vY *= KoefTreniya;
}
// Поворот вправо во время заднего хода
if (Key.isDown(Key.RIGHT)) {
Ug += 0.02;
// Торможение при заднем повороте
vX *= KoefTreniya;
vY *= KoefTreniya;
}
}
// Если не нажата никакая клавиша - торможение
if (!Key.isDown(Key.DOWN) && !Key.isDown(Key.UP) && !Key.isDown(Key.RIGHT) && !Key.isDown(Key.LEFT)) {
vX *= KoefTreniya;
vY *= KoefTreniya;
v *= KoefTreniya;
}
//------------------- Контроль скорости-------------------------------------
if (v>=maxV) {
v = maxV;
}
perX += vX; // Координата машинки по оси Х
perY += vY; // Координата машинки по оси У
mc._rotation = Ug*180/Math.PI; // Поворот машинки
mc._x = perX;
mc._y = perY;
}