Способ реализации:
Lua
Версия Warcraft:
Функция позволяет перемещать юнита без дёрганья, при перемещении идет скольжение вдоль непроходимых участков.
	---@param source unit
	---@param x real
	---@param y real
	function SetUnitPositionSmooth(source, x, y)
		local last_x = GetUnitX(source)
		local last_y = GetUnitY(source)
		local bx
		local by

		SetUnitPosition(source, x, y)

		if (RAbsBJ(GetUnitX(source) - x) > 0.5) or (RAbsBJ(GetUnitY(source) - y) > 0.5) then

			SetUnitPosition(source, x, last_y)
			bx = RAbsBJ(GetUnitX(source) - x) <= 0.5
			SetUnitPosition(source, last_x, y)
			by = RAbsBJ(GetUnitY(source) - y) <= 0.5

			if bx then
				SetUnitPosition(source, x, last_y)
			elseif by then
				SetUnitPosition(source, last_x, y)
			else
				SetUnitPosition(source, last_x, last_y)
			end

		end
	end
jass версия
function SetUnitPositionSmooth takes unit source, real x, real y returns nothing
    local real last_x = GetUnitX(source)
    local real last_y = GetUnitY(source)
    local boolean bx
    local boolean by

    call SetUnitPosition(source, x, y)

    if (RAbsBJ(GetUnitX(source) - x) > 0.5) or (RAbsBJ(GetUnitY(source) - y) > 0.5) then
        
        call SetUnitPosition(source, x, last_y)
        set bx = RAbsBJ(GetUnitX(source) - x) <= 0.5
        call SetUnitPosition(source, last_x, y)
        set by = RAbsBJ(GetUnitY(source) - y) <= 0.5
        
        if bx then
            call SetUnitPosition(source, x, last_y)
        elseif by then
            call SetUnitPosition(source, last_x, y)
        else
            call SetUnitPosition(source, last_x, last_y)
        endif

    endif
endfunction
пример работы можно увидеть тут, примерно с минуты видео
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
30
Неплохо бы карту пример, а то непонятно как её использовать.
30
Hate:
вместо обычного SetUnitPosition
Вместо обычного плавность никто не заметить.
26
NazarPunk:
Hate:
вместо обычного SetUnitPosition
Вместо обычного плавность никто не заметить.
ты серьезно щас? хоть когда нибудь перемещение делал как в рпг?
30
ты серьезно щас? хоть когда нибудь перемещение делал как в рпг?
Делал, на мемхаке двигал невидимого юнита, за курсором, за которым бежал основной юнит. Вообще без проблем.
26
ну вот попробуй обычного юнита двигать через клавиши через сет позишн. увидишь очень много интересного
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.