Don Leno писал(а):кто нить знает другой способ подобной реализации?
Don Leno писал(а):И как же мне повернуть изображение если моя АПИ воспринимает только градусы?
Don Leno писал(а):Не понимаю как регулировать скорость движения?
Don Leno писал(а):Кстати по проекту движения. В переменной Ang храниться угол в радианах?
'Delay
For s = 0 To 100
ship.Left = ship.Left
ship.Top = ship.Top
Next s
Хакер писал(а):разве это не неприемлемо, когда кораблик стартует и останавливается скачкообразно? И меняет направление мгновенно?
Хакер писал(а):Феерическая дрянь. Особенно вот это:
- Код: Выделить всё
'Delay
For s = 0 To 100
ship.Left = ship.Left
ship.Top = ship.Top
Next s
Хакер писал(а):Мой пример.
Mikle писал(а):И вроде лишнего нет, но ДЛИННО!
Private Sub Timer1_Timer()
Dim v1 As Vector
v1 = vSubt(TPos, ShPos)
ShSpd = vAdd(ShSpd, vScale(vNorm(vSubt(vScale(v1, Sqr(2 * PwA / vLen(v1))), ShSpd)), PwA))
ShPos = vAdd(ShPos, ShSpd)
DrawShip
End Sub
Public Function vNorm(v As Vector) As Vector
Dim s As Single
s = 1 / vLen(v)
vNorm.x = v.x * s
vNorm.y = v.y * s
End Function
Mikle писал(а):Верно, если корабль достигает цели, то начинает незаметно для глаза колебаться около неё, постепенно приближаясь. В какой-то момент может произойти попытка нормализации нулевого вектора, это и в старом варианте возможно, но вероятность ниже. По идее, когда цель достигнута в некотором незаметном для глаза приближении, нужно прекращать расчёты.
If dist <= tolerance_radius And V2Length(V2Scale(.Speed, dt)) <= tolerance_radius Then
.Speed.X = 0: .Speed.Y = 0
.MovementPhase = Idling
Else
Хакер писал(а):И при этом ты удивляешься, почему же я удлинняю код?
Mikle писал(а):А у тебя есть явно лишнее, например - четыре фазы полёта. Их достаточно двух - "летим" и "прилетели".
Сейчас этот форум просматривают: SemrushBot, Yandex-бот и гости: 64