Иллюстрированный самоучитель по Flash-games


Создание кода - часть 4


function determineBounds(pos) {

// Определяем границы перемещения.

var bounds = {left: 1000 , right: 1000, top: 1000 ,bottom:pos.у};

// Цикл по всем объектам.

for(var i=0;i

// Рассматриваем только блоки,

if (objects[i].type == "box") {

var dx = objects[i].x - pos.x;

var dy = objects[i].y - pos.y;

// Если блок в той же вертикальной позиции,

if ((dy >= 0) and (dy

// Определяем, является ли ближайшим левый блок,

if ((dx+50

bounds.left = Math.abs(dx+50);

// Определяем, является ли ближайшим правый блок.

} else if ((dx >= 0) and (dx < bounds.right)) {

bounds. right = dx-50;

}} // Блок в той же горизонтальной позиции,

if ((dx >= -50) and (dx

// Определяем, является ли ближайшим нижний блок.

if ((dy+50

bounds.bottom = Math.abs(dy+50);

// Определяем, является ли ближайшим верхний блок.
} else if ((dy-50 >= 0) and (dy-50 < bounds.top)) {

bounds.top = dy-50;

}}}}

return(bounds);}

Если лиса находится в воздухе, то независимо от того, прыгает ли она вверх или падает вниз, это состояние рассматривается как падение. Функция CheckFall следит за вертикальным перемещением лисы. Когда игрок прыгает, переменная fallSpeed принимает значение jumpPower, которое равно 60. Таким образом, лиса пытается переместиться на 60 пикселов по вертикали. В каждом кадре, в котором происходит процесс "прыжок/падение", переменная fallSpeed уменьшается на 10, что создает эффект силы тяжести. В конечном счете значение fallSpeed обнулится в верхней точке прыжка и начнет уменьшаться, а лиса устремится вниз.
Если значения скорости падения еще недостаточно, чтобы лиса достигла земли, то падение продолжается. Но как только уровень земли достигнут или пройден, падение прекращается, и вертикальная позиция лисы устанавливается равной положению земли.
Функция checkFall также обращается к свойству foxBound.top, чтобы проверить, нет ли блока над лисой. Если лиса упирается в верхнюю границу возможного движения, то импульс, направленный вверх, пропадает, переменная falispeed обнуляется. Процесс "прыжок/падение" продолжается, но является теперь только падением.




Начало  Назад  Вперед



Книжный магазин