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

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

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

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