网页功能: 加入收藏 设为首页 网站搜索  
制作爆炸效果
发表日期:2007-01-16作者:[转贴] 出处:  


  爆炸效果是各种游戏中不可或缺的。产生这种效果的方法多种多样,本文介绍一种较为简单的算法,以期抛砖引玉:)这里仅给出必要代码,请理解后自己编程。如果你有更好的算法,也请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;
}

一点建议:你可以在程序一开始,使用这个算法生成爆炸的动画。在需要使用时,循环播放。
 
我来说两句】 【加入收藏】 【返加顶部】 【打印本页】 【关闭窗口
中搜索 制作爆炸效果
本类热点文章
  Particle Fire [粒子火焰]
  wu反走样(Anti-aliased)直线
  反走样技术之一 —— Wu像素
  粒 子 系 统
  3D 粒子系统
  Real-time Cloth Deformation [实时变形..
  Ripple [水波]
  碰撞检测和粒子的交互作用
  Particle System Overview [粒子系统概..
  wu像素
  图象特效-等离子体(Plasma)
  制作爆炸效果
最新分类信息我要发布 
最新招聘信息

关于我们 / 合作推广 / 给我留言 / 版权举报 / 意见建议 / 广告投放  
Copyright ©2003-2024 Lihuasoft.net webmaster(at)lihuasoft.net
网站编程QQ群   京ICP备05001064号 页面生成时间:0.00325