Gen 17
Far collidere due oggetti è alla base della programmazione dei giochi e di norma si cerca di far collidere degli oggetti geometrici semplici come i cerchi o i quadrati.
Facendo una prova in as3 ho notato che far collidere due cerchi è più performante che far collidere due quadrati, a tal proposito potete ripete l’esperimento copiando i seguenti codici:
Quadrato:
var i:int = 0; var x1:int = 44, y1:int = -12, w1:int = 100, h1:int = 100; var x2:int = -20, y2:int = 27, w2:int = 100, h2:int = 100; var time1 = new Date(); for(i = 0; i < 10000000; i ++) { if(x1 + w1 > x2 && x1 < x2 + w2 && y1 + h1 > y2 && y1 < y2 + h2) { // Collision! } } var time2 = new Date(); trace(time2 - time1);
Cerchio:
var i:int = 0; var x1:int = -68, y1:int = 26, r1:int = 100; var x2:int = 151, y2:int = -44, r2:int = 60; var time1 = new Date(); for(i = 0; i < 10000000; i ++) { if((x2 - x1) * (x2 - x1) + (y2 - y1) * (y2 - y1) < (r1 + r2) * (r1 + r2)) { // Collision! } } var time2 = new Date(); trace(time2 - time1);
Una piccola nota è quella di separare gli "if" per migliorare le prestazioni:
var i:int = 0; var x1:int = 44, y1:int = -12, w1:int = 100, h1:int = 100; var x2:int = -20, y2:int = 27, w2:int = 100, h2:int = 100; var time1 = new Date(); for(i = 0; i < 10000000; i ++) { if(x1 + w1 > x2) { if(x1 < x2 + w2) { if(y1 + h1 > y2) { if(y1 < y2 + h2) { // Collision! } } } } } var time2 = new Date(); trace(time2 - time1);
Ultimi Commenti