ГРАВИТАЦИЯ

 

При планировании 2-х и 3-х мерного движения в пространстве, со времён Ньютона на всех действует закон всемирного тяготения :) и принято учитывать ускорение свободного падения. Однако знаменитую цифру 9.8 вы не увидите в наших расчётах. В очередной раз выясняется, что в программировании всё проще, чем в жизни. Если присмотреться к предыдущему примеру, то можно увидеть, что если в момент прохода мувиклипа точки point направить его в противоположном направлении, получится очень похоже на отскок от вертикального препятствия движущегося вдоль оси х объекта. Останется только развернуть полученный результат на 90 градусов и, в результате мы получим траекторию скачущего мяча. Замените код в нашем примере на:

 

onClipEvent (load) { // при загрузке мувиклипа

_x = 100; // задаём стартовую позицию по оси х

point = 300;// задаём точку отскока

accel = 1;// задаём ускорение

reduct = .98;// задаём затухание

}

onClipEvent (enterFrame) { // далее каждый кадр

_x+=2; // описываем траекторию по оси x (и это всё!!)

speed += accel;// увеличиваем значение скорости

y = _y + speed;// задаём вспомогательной переменной y значение следующей точки траектории без учета затуханиЯ

if (y>point) { // и проверЯем, не превышает значение переменной y значение точки отскока point и если (if) превышает,

speed = -speed; // то менЯем направление движениЯ на противоположное

_y = point;/ и устанавливаем мувиклип в точку отскока

} else { // иначе, если мувиклип не дошел до точки отскока,

_y = point - (point-y)*reduct; // рассчитываем значение новой точки траектории*

}

}

 

*Думаю, расчет новой точки траектории требует более подробного описания. Разберём выражение, в порядке его вычисления программой (далее разбор выражений будет производиться в том же порядке).

(point-y) - вычисляется расстояние между следующей точкой траектории без учета затухания y и точкой отскока point. Это значение не может быть отрицательным, поскольку данная часть кода не исполняется, если y>point

(point-y)*reduct - уменьшаем расстояние до точки отскока на два процента.

point - (point-y)*reduct; - вычисляем расстояние от начала системы координат.

 

Обратите внимание на простоту описания основной траектории _x+=2, добавляем ускорение, затухание, отскок и, как результат, вполне реалистичное движение.

 

Hosted by uCoz