Добавлен , опубликован
Способ реализации:
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)
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
27
Bergi_Bear, до окончательной задумки еще далеко. мб стенку как-нибудь сделаю. Увидел вращение, может быть ворота сделать и стены.
вот в меню стройки не делать 2 вида ворот и 2 вида стен (как обычно горизонтальные и вертикальные), а достаточно 1, не нужно копиями забивать меню. берешь просто вращаешь. И даже диагонально поставить ворота.
33
Это хорошая идея, только надо чтобы физической путь из блокираторов хорошо строился
18
Bergi_Bear:
Это хорошая идея, только надо чтобы физической путь из блокираторов хорошо строился
Можно кодом закрашивать карту путей при строительстве и разрушении, например, указав габариты объекта
33
Можно кодом закрашивать карту путей при строительстве и разрушении, например, указав габариты объекта
не думаю что это возможно, карты путей у нас в тга и динамически менять саму картинку не выйдет, но просто подкрашивать некие области при повороте ворот в принципе возможно, но эта тем не про подкрашивания, а про плавности разворота при установке
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.