Оказывается у меня старая версия, так что если что извиняйте...
Мы делали это примерно так-
заводили для объекта с переменной скоростью счетчик времени (обычное число), затем происходило следующее- (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
...
согласен, код ужасный, однако он работал. Этот участок кода отвечал за замедление кораблика в скрол шутере. Вообще для более полных формул можно почитать физику - формулы зависимости координаты от времени и ускорения. Для движения в произвольном направлении в эту формулу просто подставляются вектора по вертикали и горизонтали.
формулы можно посмотреть здесь:
Ссылка скрыта от гостей