Quote:
Originally Posted by Willian_Luigi
Super apoio essa ideia, em primeiro lugar pelo que ela vai render para vocк e segundo pela motivaзгo que esse tуpico pode gerar para as pessoas que esperam por isso.
Como vocк nгo falou muito sobre a parte tйcnica do seu sistema, nгo consegui sacar a jogada que vocк estб usando para desenhar esses pontinhos, vocк poderia falar mais sobre isso?
|
Obrigado mano
O sistema basicamente pega coordenadas entre a rota gerada pelo plugin (pathfinder) e faz um cбlculo mйdio matemбtico, ou seja, ele calcula a distвncia total entre os nodes do pathfinding (GetDistanceBetweenPoints), e obtem o nъmero total de pontos usando o arredondamento entre a distвncia total entre os nodes dividido pela distвncia padrгo (20 metros), fica mais ou menos assim:
new Float: total_de_pontos = DistanciaTotal/20;
E entгo й feito um loop pra acessar cada ponto, e dentro desse loop, й gerada a coordenada x e y final para a criaзгo da gangzone atravйs de um cбlculo de porcentagem (x = distвncia atual + diferenзa entre a distвncia a ser alcanзada e a distвncia atual / pelo nъmero de pontos totais * o id do ponto), fica mais ou menos assim:
Код:
x = xAtual + (((xASerAlcanзado - xAtual) / total_de_pontos)* id do ponto);
e a mesma coisa й feita com Y, e entгo jб tenho dois pontos pra trabalhar, sу preciso diferenciar um do outro pra ser um quadrado que ocupa o espaзo da rua, entгo й sу usar
Код:
GangZoneCreate(x-(DistanciaTotal/2), y-(DistanciaTotal/2), x+(DistanciaTotal/2),y+(DistanciaTotal/2));
A equidistвncia entre o ponto negativo e o positivo cria um quadrado ao redor do ponto, e assim forma-se uma linha... Essa base quem fez foi o NaS, meu trabalho estб sendo ligar os pontos que tenham um вngulo retilнneo (90, 180, 270 ou 360°) para que se forme uma linha apenas, poupando milhares de gangzones geradas por cada ponto.
Quote:
-Mas n0minal, vocк й burro, se vai ser uma gangzone pra cada rota linha reta, como vai diminuir o tamanho da gangzone quando passar com o carro pelo ponto adequado?
|
-Calma meu xofem, vocк esta muito exaltado fera, eu tambйm pensei nisso. A soluзгo pra isso й: cada retilнnia terб uma array e um enumerador pra guardar o dado de cada ponto que nela contйm, e tambйm terб uma "variбvel reserva" pra ser criada, no tamanho ideal da recalculaзгo da rota enquanto a anterior й deletada para ser criada posteriormente, basicamente essas 2 variбveis farгo dois swaps entre si, enquanto uma sai de aзгo a outra entra, e entгo o player nгo deixarб de ver a rota em momento algum, mesmo enquanto o trajeto estб sendo recalculado e o tamanho da gangzone esteja reduzido, apуs isso o node que nгo й mais usado й deletado da array e as informaзхes sгo limpas para que um novo node possa usar o espaзo. Й meio complexo de se pensar mas й sу ter paciкncia pra ler e re-ler...