Добавлен , опубликован
Способ реализации:
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
PAMEXI, для 126 всё возможно, кроме синхронизированных координат курсора, именно поэтому нельзя, повторить то что на видео
Можно в сингле на мемхаке
33
pro100master, Это месяц назад было =), уже не помню кто помогал, вроде ты, Doc и кто-то третий
38
Опять же, это уже юзер-френдли реализовано в той самой либе, странно, что не попробовал.
Причем не только lerp, но и hermite, и даже вкусный bezier для 1D и для Vector3.
Кому интересно - чекайте
Но в любом случае гц

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