• Курсы Академии Кодебай, стартующие в мае - июне, от команды The Codeby

    1. Цифровая криминалистика и реагирование на инциденты
    2. ОС Linux (DFIR) Старт: 16 мая
    3. Анализ фишинговых атак Старт: 16 мая Устройства для тестирования на проникновение Старт: 16 мая

    Скидки до 10%

    Полный список ближайших курсов ...

Инерция

  • Автор темы denis79513
  • Дата начала
Статус
Закрыто для дальнейших ответов.
D

denis79513

Как реализовать инерцию на blitz3d (диалект basic). Допустим имеется предмет, который движется со скоростью speed# при нажатии определенной клавиши, нужно, чтобы при отпускании этой клавиши, предмет продолжал двигаться некоторое время по инерции.
Заранее всем спасибо.
 
R

Rus59Wolf

Оказывается у меня старая версия, так что если что извиняйте...

Мы делали это примерно так-
заводили для объекта с переменной скоростью счетчик времени (обычное число), затем происходило следующее- (OBJ_X-одна из координат, OBJ_speed- текущая скорость причем именно по x, по у она может быть иной, time - счетчик времени)

...
цикл программы
If KeyDown(203) Then;left
OBJ_speed=-speed
time=millisecs()
Else

ENDIF
OBJ_X=OBJ_X+OBJ_speed
if time<>millisecs() then
if OBJ_speed>0 then
OBJ_speed=OBJ_speed-1
else
if OBJ_speed<0 then
OBJ_speed=OBJ_speed+1
endif
endif
endif

...

согласен, код ужасный, однако он работал. Этот участок кода отвечал за замедление кораблика в скрол шутере. Вообще для более полных формул можно почитать физику - формулы зависимости координаты от времени и ускорения. Для движения в произвольном направлении в эту формулу просто подставляются вектора по вертикали и горизонтали

Добавлено: Оказывается у меня старая версия, так что если что извиняйте...

Мы делали это примерно так-
заводили для объекта с переменной скоростью счетчик времени (обычное число), затем происходило следующее- (OBJ_X-одна из координат, OBJ_speed- текущая скорость причем именно по x, по у она может быть иной, time - счетчик времени)

...
цикл программы
If KeyDown(203) Then;left
OBJ_speed=-speed
time=millisecs()
Else

ENDIF
OBJ_X=OBJ_X+OBJ_speed
if time<millisecs()-100 then
if OBJ_speed>0 then
OBJ_speed=OBJ_speed-1
else
if OBJ_speed<0 then
OBJ_speed=OBJ_speed+1
endif
endif
endif

...

согласен, код ужасный, однако он работал. Этот участок кода отвечал за замедление кораблика в скрол шутере. Вообще для более полных формул можно почитать физику - формулы зависимости координаты от времени и ускорения. Для движения в произвольном направлении в эту формулу просто подставляются вектора по вертикали и горизонтали.

формулы можно посмотреть здесь:
 
D

denis79513

Большое спасибо, буду разбираться...
 
Статус
Закрыто для дальнейших ответов.
Мы в соцсетях:

Обучение наступательной кибербезопасности в игровой форме. Начать игру!