Начните с 1D.
Скорость - это скорость изменения положения во времени.В момент времени t 1 объект находится в положении x 1 .Вы позволяете ему двигаться с постоянной скоростью v от времени t 1 до времени t 2 .Пройденное расстояние (x 2 -x 1 ) - это скорость (v), умноженная на истекшее время (t 2 -t 1 ):
(x 2 -x 1 ) = v (t 2 -t 1 )
x 2 = x 1 + v (t 2 -t 1 )
Или в коде:
x + = v dt
где dt - количество (имитированное) времени с момента последнего обновления всего.
Ускорение - это скорость изменения скорость со временем.Если ускорение постоянное, вы должны отслеживать x и v, и мы получаем
x + = v dt + a (dt) / 2 2
v + = adt
(Обратите внимание, что вы не можете изменить порядок этих шагов, не изменив алгебру.)
Этого достаточно, чтобы имитировать объект, скользящий взад и вперед с помощью одного движителя.Вы контролируете «а», который подается двигателем.Если вы хотите вертикальное движение в гравитационном поле, гравитация применяет свое собственное ускорение;просто добавьте силу тяжести к ускорению двигателя, и это ваше.(Ускорение силы тяжести указывает вниз, по определению, и условно оно называется «g».)
Пока не беспокойтесь о импульсе или энергии.Или трение или сопротивление воздуха.Или столкновения.
2D: движение в x и движение в y в основном независимы, поэтому вы можете просто рассматривать их как два одномерных моделирования движения: {x, v x , a x } и {y, v y , a y }.
Если вам нужен двигатель, вы можете point (например,0-360), вы должны разбить этот вектор на x-компонент и ay-компонент, а затем применить вышеизложенное.Расщепление такого вектора - это тригонометрия;если вы не знакомы с ним, вам придется взломать книгу (или википедию).Это не так сложно, но здесь трудно объяснить.
Это должно занять вас некоторое время.Если это слишком просто и вы хотите более сложной задачи, посмотрите первые несколько глав вводного текста по физике.