金华网站制作推广,wordpress设置数字形链接报404,广州 建网站,北碚区网站建设在子弹撞到墙或者人机身上时会将碰撞到的墙体或者人机销毁
我们需要做到几点
检测子弹碰撞到的墙体或者人机将物体获取到
每帧遍历墙体列表与人机列表#xff0c;检测被碰撞的墙#xff0c;创建一个方法返回值为对应类型将被碰撞的物体返回出来 public static gudin wallp…在子弹撞到墙或者人机身上时会将碰撞到的墙体或者人机销毁
我们需要做到几点
检测子弹碰撞到的墙体或者人机将物体获取到
每帧遍历墙体列表与人机列表检测被碰撞的墙创建一个方法返回值为对应类型将被碰撞的物体返回出来 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 rgnull;//创建一个人机类型检测碰撞到的人机 gudin gd null;//建立一个gudin类型用来放置检测到的墙 if ((gdduixiangweizhi.wallpengzhuang(rec)) ! null)//调用墙体碰撞检测方法传入自身矩形检测碰撞 { xiaohui true; duixiangweizhi.wallxiaohui(gd); return;//如果碰撞检测返回结果不为空那么将碰撞到的墙传参然后销毁 } if((rgduixiangweizhi.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); }
这样子弹撞到墙体或者人机就会将其物体检测返回出来然后通过销毁方法传参将传入的物体在列表中销毁