начал изучать x y и заметил что он автоматический двигает хоть через что, как мне делать проверку что бы он не заходил в недоступные места?

Принятый ответ

native IsTerrainPathable takes real x, real y, pathingtype t returns boolean
Это именно оно, но нужно проверять не текущую точку где уже юнит есть, а где она будет при следующем тике таймера, иначе юнит застрянет в текстуре и закончит движение в итоге ни туда ни сюда
`
ОЖИДАНИЕ РЕКЛАМЫ...
0
17
4 года назад
0
раз два три Ёлочка гори!
0
7
4 года назад
0
N1ghtSiren:
раз два три Ёлочка гори!
Сайт содержит нежелательное ПО
одно на луа а мне нужно на джас

черт он проходит даже сковзь блокираторв
0
24
4 года назад
0
черт он проходит даже сковзь блокираторв
Я тебе больше скажу, он даже за границы карты выйти может...
0
7
4 года назад
0
prog:
черт он проходит даже сковзь блокираторв
Я тебе больше скажу, он даже за границы карты выйти может...
ну а как это фиксить просто я раньще по поводу этого не заморочивался писал через точки
0
28
4 года назад
0
писал через точки
Через точки точно также выходит.
0
7
4 года назад
0
PT153:
писал через точки
Через точки точно также выходит.
ну я имел ввиду я проверял в каждом способности проходимость через гуй а незнаю ка это сделать на джасс)

нашел вроде это function IsTerrainPathableBJ takes location where, pathingtype t returns boolean
return IsTerrainPathable(GetLocationX(where), GetLocationY(where), t)
endfunction
а что туда ставить вместо точек)) их юзать не хочу

native IsTerrainPathable takes real x, real y, pathingtype t returns boolean вроде это, рабюоает?
1
32
4 года назад
1
native IsTerrainPathable takes real x, real y, pathingtype t returns boolean
Это именно оно, но нужно проверять не текущую точку где уже юнит есть, а где она будет при следующем тике таймера, иначе юнит застрянет в текстуре и закончит движение в итоге ни туда ни сюда
Принятый ответ
0
7
4 года назад
0
а что делать дальше что делать чтобы триггер был оффнут( т.к он уменя муй) не могу ниче хорошого придумать)

Bergi_Bear:
native IsTerrainPathable takes real x, real y, pathingtype t returns boolean
Это именно оно, но нужно проверять не текущую точку где уже юнит есть, а где она будет при следующем тике таймера, иначе юнит застрянет в текстуре и закончит движение в итоге ни туда ни сюда
блин я не юзаю переменных для реальных интегер и буеланов

а можно просто написать GetWidgetX(T[Acindex[3]])+30*Cos(Atan2(GetUnitY(C[Acindex[3]])-GetUnitY(T[Acindex[3]]),GetUnitX(C[Acindex[3]])-GetUnitX(T[Acindex[3]])*(180/3.14159)*(3.14159/180))))?

но там запятые стоят если без переменных юзать и получается много запятых и редактор выдает ошибку

то есть после одной запятой он считает что x уже закончено и пишется y но это продолжение x-a))

решено если его двинет в закрытую точку то буду двигать всех в одну точку где есть портал этот портал тпшит в любую зону игрвоой карты
0
26
4 года назад
0
почему никто ему не сказал о SetUnitPosition?
0
28
4 года назад
0
Hate, так с помощью неё всё равно можно проскочить сквозь блокираторы.
0
26
4 года назад
0
PT153:
Hate, так с помощью неё всё равно можно проскочить сквозь блокираторы.
можно, но подход несколько разный
0
32
4 года назад
0
Можно после SetUnitXY отдавать приказ "stop"

и получиться эффект SetUnitPosition
0
26
4 года назад
0
Bergi_Bear:
Можно после SetUnitXY отдавать приказ "stop"

и получиться эффект SetUnitPosition
нет
0
32
4 года назад
0
Hate, ну ладно
0
26
4 года назад
Отредактирован Hate
0
если бы SetUnitPosition только останавливала приказы юнита, то это бы не работало
---@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
0
32
4 года назад
0
так и что оно делает? нет дёрганья?
0
26
4 года назад
0
типа того, скользит вдоль препятствий
0
28
4 года назад
0
Hate, а если заменить на SetUnitXY, скольжения не будет?
0
26
4 года назад
0
конечно, оно ж игнорирует абсолютно все
Чтобы оставить комментарий, пожалуйста, войдите на сайт.