Показать сообщение отдельно
Старый 29.08.2010, 09:49
mamtn вне форума Посмотреть профиль Отправить личное сообщение для mamtn Найти все сообщения от mamtn
  № 1  
Ответить с цитированием
mamtn

Регистрация: Jul 2009
Адрес: C-Петербург
Сообщений: 37
По умолчанию покритикуйте движение машинки

Код 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;
}
Вложения
Тип файла: swf Движение машинки для Flasher.ru.swf (901 байт, 236 просмотров)