Добавлен , опубликован
Способ реализации:
Lua
Версия Warcraft:

Краткое описание

В наработке содержится набор функций, необходимый для сглаженного поворота (+ нахождение кратчайшего угла), и для сглаженного движения при перемещении от точки до точки.
Чтобы наглядно понять о чем я, смотрим FHD видео
Видео

Код

function math.clamp (inb, low, high)
	return math.min( math.max(inb, low ), high )
end

function math.lerp(a, b, t)
	return a + (b - a) * t
end

function repeatN(t, m)
	return math.clamp(t - math.floor(t / m) * m, 0, m)
end

function lerpTheta(a, b, t)
	local dt = repeatN(b - a, 360)
	if dt>180 then	dt=dt-360 end
	return math.lerp(a, a + dt, t)
end

Примеры использования:

Для угла:
TIMER_PERIOD=1/32
local angleCast = AngleBetweenXY(GetUnitX(hero), GetUnitY(hero), GetPlayerMouseX[data.pid], GetPlayerMouseY[data.pid]) / bj_DEGTORAD
local curAngle=angleCast
TimerStart(CreateTimer(), TIMER_PERIOD, true, function()
	angleCast = AngleBetweenXY(GetUnitX(hero), GetUnitY(hero), GetPlayerMouseX[data.pid], GetPlayerMouseY[data.pid]) / bj_DEGTORAD
	curAngle = lerpTheta(curAngle, angleCast, TIMER_PERIOD * 8)
	print(curAngle)
end)
Для дистанции:
TIMER_PERIOD=1/32
local distance=DistanceBetweenXY(GetUnitX(hero), GetUnitY(hero), GetPlayerMouseX[data.pid], GetPlayerMouseY[data.pid])
local cutDistance=distance
TimerStart(CreateTimer(), TIMER_PERIOD, true, function()
	distance=DistanceBetweenXY(GetUnitX(hero), GetUnitY(hero), GetPlayerMouseX[data.pid], GetPlayerMouseY[data.pid])
	cutDistance=math.lerp(cutDistance,distance,TIMER_PERIOD * 8)
	print(cutDistance)
end)
`
ОЖИДАНИЕ РЕКЛАМЫ...
33
Без сглаживания создаётся эффект 5 fps, сглаживание же добавляет недостающие кадры
24
Блин( Было бы не плохо иметь такую штуку и на 1.26(
31
PAMEXI:
Блин( Было бы не плохо иметь такую штуку и на 1.26(
что мешает сделать такое на jass..?
33
PAMEXI, для 126 всё возможно, кроме синхронизированных координат курсора, именно поэтому нельзя, повторить то что на видео
Можно в сингле на мемхаке
33
pro100master, Это месяц назад было =), уже не помню кто помогал, вроде ты, Doc и кто-то третий
38
Опять же, это уже юзер-френдли реализовано в той самой либе, странно, что не попробовал.
Причем не только lerp, но и hermite, и даже вкусный bezier для 1D и для Vector3.
Кому интересно - чекайте
Но в любом случае гц

Кстати, с bezier можно ещё и предсказывать движение (экстраполяция), чтобы казалось, будто отклик выше
33
Опять же, это уже юзер-френдли реализовано в той самой либе, странно, что не попробовал
Опять же та, сама самая либа работает на векторах, а тут на углах, что понижает порог вхождения и общую усвояемость (и ты не сделал видюшку =))
38
Нет, там есть набор 1D функций, но в целом да - тема не раскрыта.
Но я еще даже на инг не запостил( а надо еще вики мутить и много всего
18
+ нахождение кратчайшего угла
Был один интересный случай, когда при переходе с 5 -> 355 градусов ракета решила развернуться кругом
27
а как получается так что модели пушек подкрашиваются красным, когда в водичку подводишь? это фреймы? наверн спецэффекты какие нибудь, подкрашенные цветом
так получается это модели двигаются за курсором мыши
33
Просто определение высоты и смена цвета эффекта, никаких фреймов
27
Bergi_Bear, до окончательной задумки еще далеко. мб стенку как-нибудь сделаю. Увидел вращение, может быть ворота сделать и стены.
вот в меню стройки не делать 2 вида ворот и 2 вида стен (как обычно горизонтальные и вертикальные), а достаточно 1, не нужно копиями забивать меню. берешь просто вращаешь. И даже диагонально поставить ворота.
33
Это хорошая идея, только надо чтобы физической путь из блокираторов хорошо строился
18
Bergi_Bear:
Это хорошая идея, только надо чтобы физической путь из блокираторов хорошо строился
Можно кодом закрашивать карту путей при строительстве и разрушении, например, указав габариты объекта
33
Можно кодом закрашивать карту путей при строительстве и разрушении, например, указав габариты объекта
не думаю что это возможно, карты путей у нас в тга и динамически менять саму картинку не выйдет, но просто подкрашивать некие области при повороте ворот в принципе возможно, но эта тем не про подкрашивания, а про плавности разворота при установке
Чтобы оставить комментарий, пожалуйста, войдите на сайт.