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
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
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