Jб passou 24 horas desde meu ъltimo post.
Gang Zonas Circulares
Imagem:
Usando floatsin, floatcos e uns cбlculos matemбticos bбsicos.
Funзгo:
pawn Код:
stock GangZoneRedonda(Float:raio, Float:x , Float:y, color, gzs = 20) {
static
Float:gz_X,
Float:gz_Y,
gzIndenti;
for(new i; i < gzs; i++){
gz_X = floatcos(i/(float(gzs))*6.28, radian) * raio + x ;
gz_Y = floatsin(i/(float(gzs))*6.28, radian) * raio + y ;
gzIndenti = GangZoneCreate(gz_X-(10.0), gz_Y-10.0, gz_X+10.0, gz_Y+10.0);
GangZoneShowForAll(gzIndenti, color);
}
return gzIndenti;
}
Porque 6.28? Porque й o dobro do PI oras! PI й a principal relaзгo numйrica com cнrculos, para manipulaзгo deles torna-se obrigatуrio o uso de PI
Porque 10.0? Porque й o tamanho de cada GZ unitбria, para formar o circulo.
Isto pode ser adaptado a text draws, tornando MUITOO ъtil este calculo para quem deseja fazer desenhos e coisas do tipo
![afro](images/smilies/mrgreen.gif)
Eu usei um trecho de cуdigo parecido para fazer um circulo de fogo ao redor do jogador (estilo filme). Mas vocк pode achar outras utilidades
![Smiley](images/smilies/smile.png)
Tambйm jб fiz um coraзгo usando 2 bolas e uma linha reta
Exemplo:
pawn Код:
GangZoneRedonda(100.0, 0.1,0.1, 0xFF0000FF,200);
Para checar se o cara estб dentro do circulo basta usar:
IsPlayerInRangeOfPoint(playerid, 100.0, 0.1, 0.1, 0.1);
0.1 й as coordenadas que coloquei na funзгo. 100.0 й o nosso radius que й o centro do circulo.
Por Bruno da Silva