Спавню крипов в случайной точке на регионе, но часто получается что они собираются в один шашлык. Хочу чтобы они спавнились равномерно по региону.

Мне нужно как бы исключать часть региона, чтоб она не использовалась в дальнейшем.
Не нужно. Хороший алгоритм рандома будет иметь нормальное распределение, и точки не будут тяготеть к скапливанию в одной части области.
`
ОЖИДАНИЕ РЕКЛАМЫ...
30
В подобных вопросах полезно прикладывать своё решение, нуждающееся в улучшении сразу, не дожидаясь просьбы от комментаторов.
2
Clamp:
В подобных вопросах полезно прикладывать своё решение, нуждающееся в улучшении сразу, не дожидаясь просьбы от комментаторов.
Извращался с офсетом на регионе с изменением координат через переменные, но толка с этого не получилось, да и не понятно как эти координаты сделать так же хаотичными без сближений с другими крипами.
2
PT153:
Fixed Random Seed отключён?
Да, но не в нём дело. Мне нужно как бы исключать часть региона, чтоб она не использовалась в дальнейшем.
PornoMishka:
Точки можно проверять на проходимость же.
Не хватит этого радиуса, заагрив одного из них крипы всё равно пачкой будут агриться.
30
Мне нужно как бы исключать часть региона, чтоб она не использовалась в дальнейшем.
Не нужно. Хороший алгоритм рандома будет иметь нормальное распределение, и точки не будут тяготеть к скапливанию в одной части области.
Принятый ответ
17
находим центр региона, берём 360, делим на кол-во юнитов, раскидываем на рандомное расстояние от 200 до 400(? или больше) с помощью функции
lua

function PolarProjectionXY(x, y, dist, angle)
    local PPx = x + dist * Cos(angle * bj_DEGTORAD)
    local PPy = y + dist * Sin(angle * bj_DEGTORAD)
    return PPx, PPy
end
//-----------
jass

globals
real PPx
real PPy
endglobals

function PolarProjectionXY takes real x, real y, real dist, real angle returns nothing
    PPx = x + dist * Cos(angle * bj_DEGTORAD)
    PPy = y + dist * Sin(angle * bj_DEGTORAD)
endfunction
30
с помощью функции
Внимание, правильное решение:
globals
    location tempLocation = Location(0.0, 0.0)
endglobals

function GetRandomLocationInRect takes rect r returns location
    MoveLocation(tempLocation, GetRandomReal(GetRectMinX(r), GetRectMaxX(r)), GetRandomReal(GetRectMinY(r), GetRectMaxY(r)))
    return tempLocation
endfunction

разрази меня гром, если я знаю, зачем писал обычным синтаксисом
Чтобы оставить комментарий, пожалуйста, войдите на сайт.