Автоматический расчёт координат.
#1

Ребят, всем привет.

Нужна помощь. Задумал сделать фишку с сотовой связью в игре. Идея пришла разбить всю карту на равные квадраты и сделать таким образом обхват связи. То и дело менять уровень сигнала в той или иной зоне, и тем самым добиваться разных показателей. Всё решаемо, только вот в геометрии я мягко говоря "никак". Нужна помощь. Как реализовать такое ?

Буду благодарен за любой ответ.
Reply
#2

Нахера тут геометрия?
Reply
#3

Quote:
Originally Posted by Mcc
Посмотреть сообщение
Нахера тут геометрия?
Как же ?
Есть к примеру большой квадрат(карта СА). Надо разбить этот квадрат на максимальное число квадратов меньше и получить от каждого квадрата координаты. Я думаю, что тут геометрия.
Reply
#4

Можно просто поставить объекты, например, вышки, как это сделано на LS-RP, и уже использовать функцию IsPlayerInRangeOfPoint.
Reply
#5

Quote:
Originally Posted by VVWVV
Посмотреть сообщение
Можно просто поставить объекты, например, вышки, как это сделано на LS-RP, и уже использовать функцию IsPlayerInRangeOfPoint.
Зачем, когда есть стример и динамические зоны ?
Reply
#6

IsPlayerInRangeOfPoint и тому подобное для расчёта уровня сигнала - прошлый век.
Вот запилить расчёт уровня сигнала методами геометрической оптики и равномерной геометрической теории дифракции на базе ColAndreas - вот за этим и стоит будущее, т.к. в этом случае имеет смысл задумываться игрокам над тем куда ставить базовые станции.
Reply
#7

Quote:
Originally Posted by Mexanizm93
Посмотреть сообщение
Как же ?
Есть к примеру большой квадрат(карта СА). Надо разбить этот квадрат на максимальное число квадратов меньше и получить от каждого квадрата координаты. Я думаю, что тут геометрия.
Так это же вроде легко.

Получить ид квадрата по позиции можно так:

PHP код:
(floatround(cur_pos_y square_sizefloatround_floor) * (map_size_x square_size)) + floatround(cur_pos_x square_sizefloatround_floor
А разбить карту на квадраты

PHP код:
for(new ymap_size_y+= square_size)
{
    for(new 
xmap_size_x+= square_size)
    {
        
//min_x, min_y, max_x, max_y:
        //x, y, x + square_size, y + square_size
    
}    

если я конечно не туплю
Reply
#8

Что-то вы слишком всё замудрили, разбей карту на квадраты по 50 метров и заполни массив относительно вышек.
Может пригодиться рисуем окружность по пикселям

PHP код:
//Вернёт координаты чанка.
stock Geometry::GetChunkPos2D(Float:xFloat:y, &X, &Ysquare_lengthchunk_lengthcheck_border 1)
{
    if(
check_border)
    {
        
// создадим искуственную границу дальше которой человек неможет находится
        
if(< -square_length)= -square_length 1; else if(square_length)square_length 1;
        if(
< -square_length)= -square_length 1; else if(square_length)square_length 1;
    }
    
X=floatround((x+square_length)/chunk_length,floatround_floor);
    
Y=floatround((y+square_length)/chunk_length,floatround_floor);
    return 
1;

Reply
#9

Ребят, всем спасибо. Разбираться не стал, так как долго. Решил запилить руками, через редактор ГЗ. Всё равно всем спасибо.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)