Это очень тупой вопрос... и поскольку я тоже тупой надеюсь можно)
Всё что я узнаю по матеше, это по сути все ваши ответы и метод тыка
Я знаю только как через время сделать плавное замедление (тек. сила-(нач. сила/макс. время движения*период таймера)), и там можно в принципе методом тыка настроить так, как я хочу, но это жуть как неудобно и при каких-либо малейших изменениях будет сложно перенастраивать...
Наверное, лучше примером:
Юнит отталкивается на 250 единиц, с силой... ну пускай 15, в течении 0.50 сек с периодичностью 0.03 сек.
Как сделать резкое отталкивание вначале и плавное в конце вплоть до 0?
Всё что я узнаю по матеше, это по сути все ваши ответы и метод тыка
Я знаю только как через время сделать плавное замедление (тек. сила-(нач. сила/макс. время движения*период таймера)), и там можно в принципе методом тыка настроить так, как я хочу, но это жуть как неудобно и при каких-либо малейших изменениях будет сложно перенастраивать...
Наверное, лучше примером:
Юнит отталкивается на 250 единиц, с силой... ну пускай 15, в течении 0.50 сек с периодичностью 0.03 сек.
Как сделать резкое отталкивание вначале и плавное в конце вплоть до 0?
Принятый ответ
Загруженные файлы
`
ОЖИДАНИЕ РЕКЛАМЫ...
Чтобы оставить комментарий, пожалуйста, войдите на сайт.
Отредактирован PROSHELDOTU
А вот если заменить
Speed = Speed * 0.96
на
Speed = Speed - 0.05, например
то всё будет в данном примере
Отредактирован rsfghd
timer t = GetExpiredTimer(); int i = GetHandleId(t)
unit u = LoadUnitHandle(H,i,0)
real a = LoadReal(H,i,1)/угол/, speed = LoadReal(H,i,2)/скорость/, dist = LoadReal(H,i,3)// дистанция
speed = speed*.96
dist = dist-speed
BJDebugMsg(R2S(speed))
BJDebugMsg(R2S(dist))
if dist <= speed*.5{
speed = dist
PauseTimer(t); DestroyTimer(t); FlushChildHashtable(H,i)
}else{
SaveReal(H,i,2,speed)
SaveReal(H,i,3,dist)
}
SetUnitX(u,GetUnitX(u)+speed*Cos(a));SetUnitY(u,GetUnitY(u)+speed*Sin(a))
t = null; u = null
}
timer t = CreateTimer();int i = GetHandleId(t)
SaveUnitHandle(H,i,0,GetSpellTargetUnit())
SaveReal(H,i,1,0.)
SaveReal(H,i,2,9.)
SaveReal(H,i,3,250)
TimerStart(t,.03,true,function E_Move)
""
Это ж не формула от и до, это топорный вариант.
Отредактирован PROSHELDOTU
Мб ты тоже попробуешь посчитать прежде ? )
Подкручивая базовую скорость с такой формулой ты никогда не добьёшься желаемого
Отредактирован PROSHELDOTU
Подкрутил до s12. - лучше, но всё ещё мало.
Подкрутил до s18. - ещё лучше, но движение менее плавное стало.
Подкрутил множитель до .94 - стало нормально.
При скорости 2.064 дистанция падает на 0.339 а потом до 0 = таймер паузится.
Например, если просто множитель с 0.96 изменить на 0.97 или скорость изменить с 9 на 10