Гонки
Когда объект достигает значения 600 по вертикали, что на 200 пикселов ниже границы экрана, он возвращается назад к значению 200, то есть вновь появляется на горизонте. С вероятностью 50/50 он помещается слева или справа от дороги. Именно в этот момент определяется значение переменной dx.
И наконец, масштаб объекта определяется в соответствии со значением _у. Это означает, что объект становится больше по мере приближения.
onClipEvent(enterFrame) {
// Движемся вниз.
this
._y
+
=
_root.speed;
// Движемся в стороны.
this
._x
+
=
dx
*
_root.speed;
// Возвращаем объект на исходную озицию, если он проехал за
// нижнюю границу экрана.
if
(
this
._y
>
600
) {
this
._y
=
200
;
if
(Math.random()
<
.
5
) {
// Объект слева.
this
._x
=
Math.random()
*
170
;
dx
=
–
1
;
}
else
{
// Объект справа.
this
._x
=
550
-
Math.random()
*
170
;
dx
=
1
;
// Задаем масштаб в соответствие со значением
_y.
this
._xscale
=
this
._y
/
4
;
this
._yscale
=
this
._y
/
4
;
}
}
}
Обратите внимание, что клип "sideObject" не взаимодействует с машиной. Это делает только клип "bonus". Но объекты по сторонам дороги направляют взгляд игрока так, что создается ощущение глубины.
Центральная линия движется, как и камни, но, поскольку она находится в центре экрана, она не передвигается ни вправо, ни влево. Она просто движется вниз и изменяет масштаб.
onClipEvent(enterFrame) {
// Движемся вниз.
this
._y
+
=
_root.speed;
// Возвращаемся к горизонту.
if
(
this
._y
>
400
) {
this
._y
=
200
;
// Устанавливаем масштаб.
this
._xscale
=
this
._y
/
4
;
this
._yscale
=
this
._y
/
4
;
}
}
Бонусные звезды ведут себя более похоже на объекты по сторонам. Однако они не появляются где попало. Они появляются с равной вероятностью в одном из двух мест на дороге.
Таким образом, двигаясь вниз по экрану, бонусная звезда движется в сторону со скоростью вполовину меньшей, чем вниз. Это позволяет создавать более точную перспективу, поскольку звезды находятся ближе к центру дороги.
onClipEvent(enterFrame) {
// Движемся вниз.
this
._y
+
=
_root.speed;
this
._x
+
=
dx
*
_root.speed;
// Возвращаемся к горизонту,
if
(
this
._y
>
600
) {
this
._y
=
200
;
if
(Math.random()
<
.
5
) {
// Переходим на левую сторону дороги.
this
._x
=
250
;
dx
=
-
0.5
;
}
else
{
// Переходим на правую сторону дороги.
this
._x
=
300
;
dx
=
0.5
;
}
// Устанавливаем масштаб в соответствии с вертикальным
// положением.
this
._xscale
=
this
._y
/
4
;
this
._yscale
=
this
._y
/
4
;
}
}