![]() |
Как узнать скорость?
Кто подскажет как узнать скорость движения объекта?
Движение происходит по событию таймера, по одной оси |
скорость = расстояние/время =)
|
формулу я знаю, но сам процесс в AS3 не пойму как засекать каждую секунду пройденное расстояние.
Расстояние в пикселах а лучше в единичных векторах, оно не известно. Нужно засечь сколько в секунду проходит объект, а потом скорость вычислить |
Можно в дополнение к таймеру, в соответствии с которым движется объект, сделать еше один таймер и каждую секунду снимать координаты.
|
Измеряйте расстояние в чем хотите.
Раз движение происходит по событию таймера, причем, там наверное делается что-то вроде этого: Код AS3:
Код AS3:
|
нет, там есть трения, торможения, разгон...
|
Можно по такому алгоритму попробовать:
1. Ищем стандартную функцию определения координат мувика который двигается заносим в переменную (допустим coord) 2. С помощью стандартной функцией работы с системным временем делаем переменную которая будет содержать секунды (допустим sec) 3. Создаем условие проверки изменения значения sec 3. При изменении sec на 1 (если нужна скорость с точностью в секундах) заносим значение coord в переменную (допустим sravnenie) 4. вычитаем значение coord из sravnenie или наоборот (нет разницы) 5. берем по модулю полученное значение и имеем пройденные координаты в секунду. Это для поведения по одной оси. Иначе задача усложняется вдвое. Прикинул в уме. По идее должно сработать. Успехов! |
Ну так вот я и хочу узнать как снимать координаты каждую секунду и присваивать их переменной?
|
|
Цитата:
Очевидно же, что к положению объекта добавляется некоторое количество пикселей. Это и есть скорость. В чем проблема то? |
Цитата:
Что-б вычислить скорость в секунду нужно записать его положение в начале секунды и в конце секунды, а потом определить расстояние между этими положениями... Вот я и хочу узнать как сохранить положение в начале секунды, а потом вычесть из него положение вконце секунды и так делать каждую секунду. Это и будет пиксели в секунду |
сделайте вашему объекту свойство моментальной скорости, в момент применения приращения координат вычисляйте скорость (т.е. данные начальной скорости из предыдущего значения свойства у вас есть) и меняйте свойство. а вообще есть всякие формулы расчета скорости при движении с ускорением.
|
Код AS3:
|
Да, то, что нужно, но var _offset:Number; эта переменная так-же не известна, её то-же нужно вычислить записав положение объекта при _oldTime и при currentTime а потом вычесть
Добавлено через 15 часов 42 минуты Цитата:
s = DeltaM / DeltaT здесь дэльта T это пройденное время, а дэльта М это пройденное расстояние за это время. В уме то я понимаю как это делается, а вот в actionscript 3 нет((. incvizitor написал как получить дэльту T в коде, осталось найти по ней дельту M нужно от положения объекта в старом времени отнять положение объекта в новом времени. Как это в коде записать? Надо было назвать тему: как засечь скорость, а не как узнать скорость. incvizitor, и почему в твоём коде px/s? Где видно, что интервал между _oldTime и currentTime составляет секунду? И можно-ли этим интервалом манипулировать, увеличивать или уменьшать - что-б засечь скорость не за секунду а за другое время? |
Секунда так как getTimer возвращает милисекунды, а в коде я умножаю скорость на 1000, получаеться - скорость в секунду. если надо в милисекунду, то умножать на 1000 не надо.
М расщитываеться так: Код AS3:
_destinationPoint - кординаты в которые его сейчас переместим. |
Цитата:
Вот тут: Код AS3:
|
Какой ужас!
Извини, запарки на работе, немного голова крутиться :) Код AS3:
|
_destinationPoint - кординаты в которые его сейчас переместим.
Такой координаты нет в условии, мы не перемещаем предмет - он сам перемещается, из-за своей массы скатывается с горы, отскакивает от стен и т.д. Но всё равно большое спасибо incvizitor, во многом помог. И так последний код не правильный. Ещё раз повторю как получить дэльту М: вот код: Код AS3:
так кажется дошло, как это сделать, сейчас проверю. Всё - получилось. Добавлено через 20 часов 33 минуты Капец, торможение. Так как интервал таймера - одна милесекунда, то засечь скорость в милесекунду можно было вот так: Код AS3:
|
| Часовой пояс GMT +4, время: 17:39. |
Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.