Java简单游戏开发之碰撞检测

    前言

                  不久之前在论坛上有人发贴,使用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());
  • 10
    点赞
  • 46
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值