繁体中文
设为首页
加入收藏
当前位置:程序开发首页 >> 游戏开发 >> 制作爆炸效果

制作爆炸效果

2005-01-09 20:42:18  作者:ghj1976  来源:互联网  浏览次数:23  文字大小:【】【】【
简介: 制作爆炸效果 制作爆炸效果   爆炸效果是各种游戏中不可或缺的。产生这种效果的方法多种多样, 本文介绍一种较为简单的算法,以期抛砖引玉:)这里仅给出必要代码, 请理解后自己编程。...
关键字:爆炸 效果 制作

制作爆炸效果

  爆炸效果是各种游戏中不可或缺的。产生这种效果的方法多种多样,

本文介绍一种较为简单的算法,以期抛砖引玉:)这里仅给出必要代码,

请理解后自己编程。如果你有更好的算法,也请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> 2;

for (c2=0; c2<渲染次数; c2++) {

for (x=-6; x<=6; x++) {

for (y=-6; y>16) + x;

yy = (hot[c2].y>>16) + y;

if ((xx>0) && (yy>0) && (xx<画面大小) && (yy> ((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 帧;

}

  一点建议:你可以在程序一开始,使用这个算法生成爆炸的动   

     画。在需要使用时,循环播放。             

云风工作室制作

责任编辑:admin
相关文章