Я работаю над небольшим проектом игры, и я столкнулся с проблемой, пытающейся переместить объект из точки A в точку B с твердой скоростью движения и линейный путь движения.Игра - Линейное Движение между 2 объектами (VB.NET/Любой язык программирования)
С моим исследованием я нашел фрагмент кода, чтобы сделать это, но он, похоже, не работает отлично, поскольку скорость, кажется, отличается в зависимости от угла, к которому он движется.
Это код на данный момент:
Dim x As Single, y As Single
Dim sngInc As Single
Dim lStepValue As Long
Dim PT1X = pObj.Left
Dim PT1Y = pObj.Top
Dim PT2X = pTarget.Left
Dim PT2Y = pTarget.Top
If PT1Y = PT2Y Then
sngInc = 1
If PT2X > PT1X Then
lStepValue = 1
Else
lStepValue = -1
End If
y = PT1Y
x = PT1X
x += lStepValue * sngInc
pObj.Left = x
pObj.Top = y
Else
If PT2Y > PT1Y Then
lStepValue = 1
Else
lStepValue = -1
End If
sngInc = (PT2X - PT1X)/Math.Abs(PT1Y - PT2Y)
x = PT1X
y = PT1Y
y += lStepValue
x = x + sngInc * Math.Abs(lStepValue)
pObj.Left = x
pObj.Top = y
End If
На моем тестовом проекте, это под таймер с тик 30мс. Я перевел его из кода VB6, который я нашел где-то. Проблема в том, что, как я сказал выше, заключается в том, что скорость движения не будет точно равна 1, а что-то рядом с ней в зависимости от угла.
Может кто-нибудь предоставить мне исправить или привести пример на любом другом языке программирования, как это делается, потому что я не мог найти правильной помощи от Google, ожидая, что код VB6 я нашел, и у меня нет опыта по этому вопросу. Я даже не уверен, называется ли это линейным движением между двумя объектами.
Большое спасибо :)
Спасибо, это работает так, как я хочу, чтобы он работал :) –