项目-坦克大战笔记-子弹命中时的爆炸特效

首先我们要明白爆炸特效的原理就是根据类创造一个对象,然后在子弹碰撞位置将爆炸对象绘制出来

首先我们需要设置一个爆炸类继承至GameObject

爆炸类和其他类不一样,他的图片有5张挨个播放构成动画,我们可以重写父类的设置图片方法将5张图片间隔两帧挨个替换绘制

爆炸类中有几个必须要的参数,构成动画的五张图片,动画播放速度,更换图片计数器,图片索引

我们先将5张图片放入一个数组

 Bitmap[] boombit = new Bitmap[] {Resources.EXP1, Resources.EXP2 , Resources.EXP3 , Resources.EXP4 , Resources.EXP5 };
 //将爆炸播放动画的5张图片挨个放入集合方便遍历使用

然后设置基础参数

public static int boomspeed = 2;//默认爆炸速度等于二
public static  int jishu = 0;//默认计数器等于0
public static int index = -1;//设置基础索引

创建构造函数

 public Boom(int x,int y)//构造函数
 {
     foreach (Bitmap b in boombit)//遍历图片
     { 
         b.MakeTransparent(Color.Black);//将图片黑色全部设置为透明
     }
     this.x = x - kuan / 2;//根据碰撞位置调整生成位置,将图片产生位置设置好
     this.y = y - gao / 2;
 }

由于我们需要将图片的黑色部分设置为透明,可以在调用构造函数时设置图片,然后将设置图片生成位置为传入位置的左上方一些,确保传入位置在图片的中心

继承父类的update方法

 public override void update()//重写父类的代码
 {
    
         shezhiindex();
         base.update();//获取父类中此方法的代码,获取绘制方法
     
 }

由于图片在数组中,所以我们设置图片的时候需要不停改变索引,我们可以设置一个每帧变化索引的方法

 private static void shezhiindex()//设置生成的图片索引
 {
     if (index < 4)
     {
         jishu++;//每运行一次计数器加一
         index = (jishu - 1) / boomspeed;//将计数器和速度计算的结果设置成索引
     }
 }

然后重写父类的设置图片代码,将图片根据索引改变

 protected override Image shehziImage()//重写设置图片方法
 {
     
     return boombit[index];//设置图片
 }

在对象设置类中放置生成的爆炸对象以及设置生成爆炸对象方法

先创建一个列表放置爆炸对象方便实例化

  private  static List<Boom>boomlist=new List<Boom>();//创建一个爆炸类型列表放置爆炸效果

然后创建爆炸对象生成方法,将生成爆炸对象以及将对象放入列表写进去

 public static void boom(int x,int y)//设置爆炸特效
 {
     Boom boom=new Boom(x,y);
     boomlist.Add(boom);//将boom类型放入数组
 }

这样就做好了生成爆炸特效的方法,然后我们需要在子弹类型中子弹碰撞时将爆炸特效生成

 if ((gd=duixiangweizhi.wallpengzhuang(rec)) != null)//调用墙体碰撞检测方法,传入自身矩形检测碰撞
 {
     duixiangweizhi.boom(boomx,boomy);//创建爆炸特效
     xiaohui = true;
    duixiangweizhi.wallxiaohui(gd); return;//如果碰撞检测返回结果不为空那么将碰撞到的墙传参然后销毁
 }
if((rg=duixiangweizhi.renjipengzhuang(rec))!=null)//检测碰撞到人机
     {
     duixiangweizhi.boom(boomx, boomy);//创建爆炸texiao
     xiaohui = true;
     duixiangweizhi.renjixiaohui(rg); return;

 }

这样爆炸特效就创建出来了,下一节我们讲怎么将爆炸特效播放完毕后消除

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值