游戏开发-JAVA碰撞检测

碰撞检测常用于游戏开发,通过碰撞检测判断前面是否有障碍物以及两个物体是否发生碰撞,根据检测的结果做出不同的处理,。

java.awt.Rectangle类提供了intersects(Rectangle r)方法来判断两个边 界是否发生了交汇。当两个边界对象发生交汇时,如图1.1所示, intersects()方法的返回结果为true;当两个边界对象没有交汇时,如图1.2所示,intersects()方法的返回结果为false。

两个边界对象发生交汇
两个边界对象发生交汇
两个边界对象没有交汇
两个边界对象没有交汇

程序为恐龙和水管都设定了边界,只要任何一个边界发生交汇,则 认为恐龙撞到了障碍。因为恐龙的图像是不规则图形,所以需要设定多 个边界区域,游戏将恐龙的头部和脚部作为碰撞的区域,头部和脚部的 边界如图2.1所示。石头和仙人掌的形状不同,所以两者的碰撞区域 也不同,石头的边界如图2.2所示,仙人掌的边界如图2.3所示。

恐龙的头部和脚部边界
图2.1 恐龙的头部和脚部边界
石头的边界
图2.2 石头的边界
仙人掌的边界
图2.3 仙人掌的边界

在GamePanel游戏面板类的paintImage()方法中,绘制完每个障碍 后,会判断刚刚绘制的障碍对象是否碰到了恐龙的头或脚。利用边界对 象的intersects()方法进行判断,只有存在ture结果,就让游戏结束。碰撞 检测的关键代码如下:

碰撞检测

发表评论