В реальной жизни, этот множитель определяется экспериментально и отличается для каждой взаимодействующей поверхности объекта. Например, влажный ледяной куб на резиновом полу может иметь очень низкий коэффициент трения (.01), в то время как теннисные туфли на том же полу могут иметь более высокий коэффициент трения (.2). В ActionScript вы можете просто выбрать значение для u в зависимости от вида поверхности с которой имеете дело.
Используя Второй закон Ньютона, мы можем определить замедление в результате трения:
F =mass*accel =u*mass*gravity
Сокращая mass в обеих частях уравнения, мы получаем:
accel =u*gravity
Эта переменная accel будет использована в уравнениях векторной скорости, с которыми мы будем работать. Ниже представлены шаги, которые вам нужно выполнить для реализации трения:
1. Найдите ускорение в результате трения, используя уравнение accel=u*gravity.
2. Примените значение accel к векторной скорости в каждом фрейме (точно также, как мы делали с ускорением) пока векторная скорость не достигнет 0.
Помните, что отрицательное ускорение является замедлением
Прекратите применение переменной, когда скорость достигнет 0. Если вы не сделаете этого, объект станет на самом деле двигаться в противоположном направлении.
friction
трение
velocity
векторная скорость
Чтобы понаблюдать это в действии, откройте файл roll.fla в папке Chapter04. В этом файле мы перемещаем шар в направлении x. Он замедляется под действием трения до остановки. Ниже приведен использованный для этого код ActionScript:
1 xmov =10;
2 gravity =2;
3 u =.2;
4 accel =u*gravity;
5 _root.onEnterFrame =function(){
6 if (Math.abs(xmov)>=Math.abs(accel)){
7 if (xmov>0){
8 xmov -=accel;
9 }else if (xmov<0){
10 xmov +=accel;
11 }
12 }else {
13 xmov =0;
14 }
15 ball._x +=xmov;
16 };
В строке 1 мы даем шару начальную векторную скорость, так чтобы он имел некоторый ее запас для движения до остановки