在子弹撞到墙或者人机身上时会将碰撞到的墙体或者人机销毁
我们需要做到几点
检测子弹碰撞到的墙体或者人机将物体获取到
每帧遍历墙体列表与人机列表,检测被碰撞的墙,创建一个方法返回值为对应类型将被碰撞的物体返回出来
public static gudin wallpengzhuang(Rectangle rt)//传递一个Rectangle类型做检测
{
foreach (gudin gudin in walllist)//遍历所有墙
{
if (gudin.getjuxing().IntersectsWith(rt))//获取墙的矩形调用IntersectsWith方法检测与传递进来的矩形是否碰撞
{
return gudin;//返回发生碰撞的墙
}
}
foreach(gudin gudin1 in steellist)//遍历铁块
{
if(gudin1.getjuxing().IntersectsWith(rt))
{
return gudin1;//返回发生碰撞的墙
}
}
return null;//如果没有符合条件的那么返回空
}
public static renji renjipengzhuang (Rectangle re)//检测人机碰撞
{
foreach(renji rg in renjilist)
{
if (rg.getjuxing().IntersectsWith(re))//如果碰撞
{
return rg;//返回发生碰撞的墙
}
}
return null;
}
在子弹类将子弹的矩形传递近方法检测与检测碰撞方法中列表的物体是否碰撞
创建一个临时变量,如果碰撞就将碰撞到物体的信息传递到临时变量中
renji rg=null;//创建一个人机类型检测碰撞到的人机
gudin gd = null;//建立一个gudin类型用来放置检测到的墙
if ((gd=duixiangweizhi.wallpengzhuang(rec)) != null)//调用墙体碰撞检测方法,传入自身矩形检测碰撞
{
xiaohui = true;
duixiangweizhi.wallxiaohui(gd); return;//如果碰撞检测返回结果不为空那么将碰撞到的墙传参然后销毁
}
if((rg=duixiangweizhi.renjipengzhuang(rec))!=null)
{
xiaohui = true;
duixiangweizhi.renjixiaohui(rg); return;
}
}
创建一个销毁方法,遍历列表将碰撞到的物体销毁
public static void wallxiaohui(gudin wall)//检测墙销毁
{
walllist.Remove(wall);//将检测到的墙传参销毁
}
public static void renjixiaohui(renji rg)//检测人机销毁
{
renjilist.Remove(rg);
}
这样,子弹撞到墙体或者人机就会将其物体检测返回出来,然后通过销毁方法传参将传入的物体在列表中销毁