欢迎访问:常州市武进区嘉泽中心小学网站 !今天是:
栏目列表
您现在的位置是:首页>>教师>>计算机技术>>程序设计>>游戏开发>>文章内容
制作爆炸效果
发布时间:2008-11-20   点击:   来源:本站原创   录入者:佚名
  制作爆炸效果

爆炸效果演示 制作爆炸效果 爆炸效果演示


  爆炸效果是各种游戏中不可或缺的。产生这种效果的方法多种多样,
本文介绍一种较为简单的算法,以期抛砖引玉:)这里仅给出必要代码,
请理解后自己编程。如果你有更好的算法,也请E给云风一份:)~  
  注:为了提高速度,题头演示画面为40x40x32帧。而   
    下面算法将产生80x80x64帧的图象。        

  首先,你必须创建一个调色版,我们需要使用到16种颜色(如下)

                #000000 #100000 #2C0000 #480000 #650000 #810000 #A10000 #C20000                 #E20000 #FF0000 #FF6500 #FF9500 #FFC600 #FFFF00 #FFFF7D #FFFFFF
  下面不是一个可用的程序,你所要作的工作是要将它读懂:)   




#define 画面帧数  64

#define 画面大小  80

#define 渲染次数  32


/* 渲染次数越多,爆炸画面中的亮块面积将越大 */ void 创建爆炸效果() { unsigned char 画面[画面大小][画面大小]; /* 画面这个数组里最终将存放 0~15 间的整数,对应上面调色版里的16种颜色 */ long int c, c2, x, y, xx, yy, color; struct { long int x, y, xc, yc; } hot[渲染次数]; for (c=0; c<渲染次数; c++)="" {="" hot[c].x="hot[c].y" =="" (画面大小/2)=""><<16; hot[c].xc = -0x7FFF 到 0x8000 之间的随机数; hot[c].yc = -0x7FFF 到 0x8000 之间的随机数; } for (c=0; c<画面帧数; c++)="" {="" 清空画面;="" color="((c<16)" c*4="" :="" (80-c))="">> 2; for (c2=0; c2<渲染次数; c2++)="" {="" for="" (x="-6;" x=""><=6; x++) { for (y=-6; y<=6; y++) { xx = (hot[c2].x>>16) + x; yy = (hot[c2].y>>16) + y; if ((xx>0) && (yy>0) && (xx<画面大小) &&="" (yy=""><画面大小)) {="" 画面[yy][xx]="" +="(color">> ((ABS(x)+ABS(y))/3)); if (画面[yy][xx] > 63) 画面[yy][xx] = 63; } } } hot[c2].x += hot[c2].xc; hot[c2].y += hot[c2].yc; } for (x=0; x<画面大小; x++)="" {="" for="" (y="0;" y=""><画面大小; y++)="" {="" c2="画面[y][x];" if="" (c2="">< 8) 画面[y][x] = 0; else 画面[y][x] = c2/4; } } } 储存画面到爆炸动画第 c 帧; }

  一点建议:你可以在程序一开始,使用这个算法生成爆炸的动   
     画。在需要使用时,循环播放。             


云风工作室制作


附件:
    关闭窗口
    打印文档
    账号登录
    保持登录 忘记密码?
    账号与武进教师培训平台同步