前言
不久之前在论坛上有人发贴,使用java编写的超级马里奥如何实现碰撞检测,笔者自己以前
也做过Tank大战。里面同样涉及到碰撞检测,翻翻U盘里的东西还在,什么时候也给共享出来。
这篇文章就简单游戏中的碰撞检测做一个简单的总结。首先需声明的是这里只是2D的碰撞检测。
碰撞检测
对于形状之间如何来判断是否是碰撞的这要根据具体的形状来定。在新手练手的小游戏中,
物体形状一般可以设定为矩形区域,这类规则图形。它的碰撞检测可以通过java API中的
Rectangle类来实现碰撞的检测。
规则图形碰撞检测(Rectangle)
首先我们查看API关于Rectangle类的介绍:它就是指定坐标空间的一个区域,这个区域是通过
指定左上角x、y坐标和去高度和宽度来确定的。
接下来看起具体的方法public Rectangle intersection(Rectangle r),这个方法就是碰撞检测的
关键了,如果两个Rectangle对象有交集,那么他们就有碰撞了。而每个形状我们都可以得到他们
的Rectangle对象,这样图形的碰撞检测也就得以实现了。
看下具体实现源码:
/* 判断子弹是否击中障碍物 */
public boolean isHit(com.Alex.map.Map map) {
boolean flag = true;// 代表没有撞到
// 分类别的得到所有的障碍物
List<Stuff> stuffList = new Vector<Stuff>();
stuffList.addAll(map.getBricks());
stuffList.addAll(map.getIrons());
stuff