Как можно сделать так, чтобы при прыжке, кастер не уходил за границы карты, но при этом облетал юнитов, склоны и т.д.?

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

function SafeX takes real pxx returns real
local real lfr=GetRectMinX(bj_mapInitialPlayableArea)+50
if(pxx<lfr)then
return lfr
endif
set lfr=GetRectMaxX(bj_mapInitialPlayableArea)-50
if(pxx>lfr)then
return lfr
endif
return pxx
endfunction
function SafeY takes real pyy returns real
local real lfr=GetRectMinY(bj_mapInitialPlayableArea)+50
if(pyy<lfr)then
return lfr
endif
set lfr=GetRectMaxY(bj_mapInitialPlayableArea)-50
if(pyy>lfr)then
return lfr
endif
return pyy
endfunction
set a = SafeX(x+80.*Cos(r))
set b = SafeY(y+80.*Sin(r))
Как-то так
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
2
32
6 лет назад
2
Loran124, руками, проверка координах x и y.
На гуи такое не делают, ресурсоемко и трудоемко + бесполезно
0
18
6 лет назад
Отредактирован Hodor
0
quq_CCCP
Ой ну зачем такой геморрой лишний, аккуратно на точках сделать и всё будет шикарно.
Тем более не такая уж и сложная наработка у него, поэтому тут тупо судить о производительности.
0
26
6 лет назад
0
Loran124, не знаю, как реализован твой прыжок, а в этой карте морф в летающего и изменение высоты полёта:
Сначала надо прыгнуть, нажав на иконку превращения, а потом можно будет по двойному щелчку правой кнопки мыши прыгать.
Загруженные файлы
0
26
6 лет назад
0
При движении юнита проверяй выходит ли точка в игровую область карты
Если да - отключай коллюзию на юните, иначе - включай
Дальше идёт триггерное движение юнита, если упрётся в край карты - будет об него биться
0
11
6 лет назад
0
Можно у края карты сделать область, заходя в которую юнита отодвинет/телепортирует назад
0
21
6 лет назад
0
Вот готовая система, которая не позволяет кому-либо покидать игровую территорию.

Или вместо функций SetUnitX/Y( ) использовать SetUnitPosition( ). Эта функция не переносит на непроходимые точки.
Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
Чтобы оставить комментарий, пожалуйста, войдите на сайт.