您现在的位置是:首页 > 行业发展
分享一个超好看的3D烟花代码
智慧创新站
2025-03-28【行业发展】146人已围观
简介!doctypehtmlhtmlheadmetacharset="utf-8"title3D烟花/titlestylehtml,body{margin:0px;width:100%;height:100%;overflow:hidden;background:canvas{width...
!doctypehtmlhtmlheadmetacharset="utf-8"title3D烟花/titlestylehtml,body{margin:0px;width:100%;height:100%;overflow:hidden;background:canvas{width:100%;height:100%;}/style/headbodycanvasid="canvas"/canvasscriptfunctioninitVars(){pi=;ctx=("2d");=;=;cx=/2;cy=/2;playerZ=-25;playerX=playerY=playerVX=playerVY=playerVZ=pitch=yaw=pitchV=yawV=0;scale=600;seedTimer=0;seedInterval=5,seedLife=100;gravity=.02;seeds=newArray();sparkPics=newArray();s="";for(i=1;i=10;++i){sparkPic=newImage();=s+"spark"+i+".png";(sparkPic);}sparks=newArray();pow1=newAudio(s+"");pow2=newAudio(s+"");pow3=newAudio(s+"");pow4=newAudio(s+"");frames=0;}functionrasterizePoint(x,y,z){varp,d;x-=playerX;y-=playerY;z-=playerZ;p=(x,z);d=(x*x+z*z);x=(p-yaw)*d;z=(p-yaw)*d;p=(y,z);d=(y*y+z*z);y=(p-pitch)*d;z=(p-pitch)*d;varrx1=-1000,ry1=1,rx2=1000,ry2=1,rx3=0,ry3=0,rx4=x,ry4=z,uc=(ry4-ry3)*(rx2-rx1)-(rx4-rx3)*(ry2-ry1);if(!uc)return{x:0,y:0,d:-1};varua=((rx4-rx3)*(ry1-ry3)-(ry4-ry3)*(rx1-rx3))/uc;varub=((rx2-rx1)*(ry1-ry3)-(ry2-ry1)*(rx1-rx3))/uc;if(!z)z=.000000001;if(ua0ua1ub0ub1){return{x:cx+(rx1+ua*(rx2-rx1))*scale,y:cy+y/z*scale,d:(x*x+y*y+z*z)};}else{return{x:cx+(rx1+ua*(rx2-rx1))*scale,y:cy+y/z*scale,d:-1};}}functionspawnSeed(){seed=newObject();=-50+()*100;=25;=-50+()*100;=.1-()*.2;=-1.5;//*(1+()/2);=.1-()*.2;=frames;(seed);}functionsplode(x,y,z){t=5+parseInt(()*150);sparkV=1+()*2.5;type=parseInt(()*3);switch(type){case0:pic1=parseInt(()*10);break;case1:pic1=parseInt(()*10);do{pic2=parseInt(()*10);}while(pic2==pic1);break;case2:pic1=parseInt(()*10);do{pic2=parseInt(()*10);}while(pic2==pic1);do{pic3=parseInt(()*10);}while(pic3==pic1||pic3==pic2);break;}for(m=1;mt;++m){spark=newObject();=x;=y;=z;p1=pi*2*();p2=pi*();v=sparkV*(1+()/6)=(p1)*(p2)*v;=(p1)*(p2)*v;=(p2)*v;switch(type){case0:=sparkPics[pic1];break;case1:=sparkPics[parseInt(()*2)?pic1:pic2];break;case2:switch(parseInt(()*3)){case0:=sparkPics[pic1];break;case1:=sparkPics[pic2];break;case2:=sparkPics[pic3];break;}break;}=25+()*50;=1;=newArray();(spark);}switch(parseInt(()*4)){case0:pow=newAudio(s+"");break;case1:pow=newAudio(s+"");break;case2:pow=newAudio(s+"");break;case3:pow=newAudio(s+"");break;}d=((x-playerX)*(x-playerX)+(y-playerY)*(y-playerY)+(z-playerZ)*(z-playerZ));=1.5/(1+d/10);();}functiondoLogic(){if(seedTimerframes){seedTimer=frames+seedInterval*()*10;spawnSeed();}for(i=0;;++i){seeds[i].vy+=gravity;seeds[i].x+=seeds[i].vx;seeds[i].y+=seeds[i].vy;seeds[i].z+=seeds[i].vz;if(frames-seeds[i].bornseedLife){splode(seeds[i].x,seeds[i].y,seeds[i].z);(i,1);}}for(i=0;;++i){if(sparks[i].alpha0sparks[i].radius5){sparks[i].alpha-=.01;sparks[i].radius/=1.02;sparks[i].vy+=gravity;point=newObject();=sparks[i].x;=sparks[i].y;=sparks[i].z;if(sparks[i].){x=sparks[i].trail[sparks[i].].x;y=sparks[i].trail[sparks[i].].y;z=sparks[i].trail[sparks[i].].z;d=(()*()+()*()+()*());if(d9){sparks[i].(point);}}else{sparks[i].(point);}if(sparks[i].)sparks[i].(0,1);sparks[i].x+=sparks[i].vx;sparks[i].y+=sparks[i].vy;sparks[i].z+=sparks[i].vz;sparks[i].vx/=1.075;sparks[i].vy/=1.075;sparks[i].vz/=1.075;}else{(i,1);}}p=(playerX,playerZ);d=(playerX*playerX+playerZ*playerZ);d+=(frames/80)/1.25;t=(frames/200)/40;playerX=(p+t)*d;playerZ=(p+t)*d;yaw=pi+p+t;}functionrgb(col){varr=parseInt((.5+(col)*.5)*16);varg=parseInt((.5+(col)*.5)*16);varb=parseInt((.5-(col)*.5)*16);return"ff8";for(i=-100;i100;i+=3){for(j=-100;j100;j+=4){x=i;z=j;y=25;point=rasterizePoint(x,y,z);if(!=-1){size=250/(1+);d=(x*x+z*z);a=0.75-(d/100,6)*0.75;if(a0){=a;(/2,/2,size,size);}}}}=1;for(i=0;;++i){point=rasterizePoint(seeds[i].x,seeds[i].y,seeds[i].z);if(!=-1){size=200/(1+);(/2,/2,size,size);}}point1=newObject();for(i=0;;++i){point=rasterizePoint(sparks[i].x,sparks[i].y,sparks[i].z);if(!=-1){size=sparks[i].radius*200/(1+);if(sparks[i].alpha0)sparks[i].alpha=0;if(sparks[i].){=;=;switch(sparks[i].img){casesparkPics[0]:="84f";break;casesparkPics[2]:="fff";break;casesparkPics[4]:="f44";break;casesparkPics[6]:="84f";break;casesparkPics[8]:="44f";break;}for(j=sparks[i].;j=0;--j){point2=rasterizePoint(sparks[i].trail[j].x,sparks[i].trail[j].y,sparks[i].trail[j].z);if(!=-1){=j/sparks[i].*sparks[i].alpha/2;();(,);=1+sparks[i].radius*10/(sparks[i].)/(1+);(,);();=;=;}}}=sparks[i].alpha;(sparks[i].img,/2,/2,size,size);}}}functionframe(){if(frames100000){seedTimer=0;frames=0;}frames++;draw();doLogic();requestAnimationFrame(frame);}("resize",()={=;=;cx=/2;cy=/2;});initVars();frame();/scriptdivstyle="text-align:center;"/div/body/html
很赞哦!(109)