Значение distance представляет собой расстояние между центрами двух объектов.
Скорее всего, вам никогда не придется использовать столь реалистичную трактовку гравитации в ваших играх. Однако, если вам хотелось бы видеть работающий пример вышеприведенного соотношения во Flash, посмотрите на мой эксперимент, сделанный на Flash 5, файл realGravity.fla в папке Chapter04. Код ActionScript в realGravity.fla обрабатывает определение столкновений, реакцию на столкновения и действие сил гравитации.
Достаточный подход к рассмотрению гравитации
Как упоминалось в начале этой главы, есть моменты, когда упрощенная формула будет столь же функциональна для наших игровых целей, что и сложная, «реальная» физика, за изучение которой я заплатил много денег, чтобы получить диплом. Наступил один из тех моментов. Если вы беспокоились о том, что придется работать с уравнениями гравитации, вы будете рады услышать, что существует простой способ добавления эффекта гравитации в ваши игры: просто придумайте значение для гравитации – скажем 2 – и затем добавляйте это значение в вашу составляющую y векторной скорости в каждом фрейме.
Чтобы увидеть пример, иллюстрирующий описанный подход, откройте файл bounce.fla в главе Chapter04 на CD. В этом файле, я воздействовал на векторную скорость шара, используя фальшивую гравитацию. Я также добавил простой трюк для обнаружения столкновения, для того чтобы шар не провалился сквозь пол (мы будем говорить об этом более подробно в Главе 5 и 6, «Обнаружение столкновений» и «Реакция на столкновения»). Ниже приведен код ActionScript:
1 ymov =0;
2 //set gravity
3 gravity =2;
4 _root.onEnterFrame =function (){
5 ymov +=gravity;
6 ball._y +=ymov;
7 if (ball._y >400){
8 ball._y =400;
9 ymov *=-1;
10 }
11 }
В 5 строке вы можете видеть, что гравитация использована для изменения векторной скорости шара таким же образом, как для этого использовалось ускорение. В строках с 7 по 10 мы проверяем, не опустился ли шар ниже значения 400 (которое является высотой расположения пола в сцене этого фильма)