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

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

Мне нужно как бы исключать часть региона, чтоб она не использовалась в дальнейшем.
Не нужно. Хороший алгоритм рандома будет иметь нормальное распределение, и точки не будут тяготеть к скапливанию в одной части области.
`
ОЖИДАНИЕ РЕКЛАМЫ...

Показан только небольшой набор комментариев вокруг указанного. Перейти к актуальным.
0
28
5 лет назад
Отредактирован PT153
0
Fixed Random Seed отключён?
0
7
5 лет назад
0
Точки можно проверять на проходимость же.
0
2
5 лет назад
Отредактирован IwaLain
0
PT153:
Fixed Random Seed отключён?
Да, но не в нём дело. Мне нужно как бы исключать часть региона, чтоб она не использовалась в дальнейшем.
PornoMishka:
Точки можно проверять на проходимость же.
Не хватит этого радиуса, заагрив одного из них крипы всё равно пачкой будут агриться.
1
30
5 лет назад
1
Мне нужно как бы исключать часть региона, чтоб она не использовалась в дальнейшем.
Не нужно. Хороший алгоритм рандома будет иметь нормальное распределение, и точки не будут тяготеть к скапливанию в одной части области.
Принятый ответ
2
17
5 лет назад
2
находим центр региона, берём 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
0
30
5 лет назад
Отредактирован Clamp
0
с помощью функции
Внимание, правильное решение:
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

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