Инерция

Тема в разделе "Разработка игр и приложений к ним", создана пользователем denis79513, 17 окт 2010.

Статус темы:
Закрыта.
  1. denis79513

    denis79513 Гость

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

    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

    ...

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

    формулы можно посмотреть здесь: http://www.physics.ru/courses/op25part1/co...ph4/theory.html
     
  3. denis79513

    denis79513 Гость

    Большое спасибо, буду разбираться...
     
  4. Rus59Wolf

    Rus59Wolf Гость

    Всегда пожалуйста если действительно смог помочь. Если графика 2д и будут непонятки то готов помогать и дальше.
     
Статус темы:
Закрыта.

Поделиться этой страницей