Функция checkPorLand проверяет массив footPoints:
ship._x += ship.dx;
ship._y += ship.dy;}
Функция checkPorLand проверяет массив footPoints: находится ли хоть одна опора лунохода внутри клипа "pad". Если там нет ни одной опоры, переменной landed присваивается значение false. Такое же значение присваивается и в том случае, когда скорость лунохода больше трех единиц, поскольку данная скорость слишком высока для того, чтобы луноход смог совершить посадку.
Если после этого значение переменной landed все еще равно true, значит, луноход удачно совершил посадку. Все, что, теперь необходимо сделать, - перейти к следующему кадру в основной временной шкале и увеличить значение переменной gameLevel на единицу.
function checkForLand() {
// Выясняем, обе ли опоры находятся на посадочной площадке. landed = true;
for(i=0; i
// Просматриваем все площадки.
footDown = false;
for(j=0; j
// Проверяем, находится ли опора на площадке,
if (pads[j].hitTest(ship._x+footPoints[i].x, ship._y+footPoints[i].y, true)) {
footDown = true;
break;}}
// Если опора не находится на площадке,
// значит, корабль не совершил посадку,
if (!footDown) {
landed = false;
break;}} // Проверяем, не слишком ли быстра движется корабль.
if (ship.dy > 3.0) landed = false;
if (landed) {
// Посадка совершена. gotoAndPlay(_currentFrame+1);
gameLevel++;
}}
С другой стороны, необходимо проверять, взорвался луноход или нет. В массиве hitPoints содержится список координат точек вокруг корабля: двух опор, середины каждой стороны, вершины и центра днища. Так как невозможно определить, полностью ли один объект накладывается на другой, вы просто проверяете эти точки. Если какая-то из них оказалась внутри элемента "activeground", тогда корабль разбился. У клипа "Ground - level X" на каждом уровне - имя экземпляра "activeground".
function checkForCrash() {
// Корабль не совершил посадку. Проверяем, коснулся ли он
// поверхности Луны,
if (Handed) {
// Просматриваем все возможные точки касания.
for(i=0; i
// Проверяем, не коснулся ли корабль поверхности