怎么实现人物与地图的碰撞检测??

碵蝎 2013-05-18 09:41:30
我在用J2SE做了个超级玛丽的游戏,但是不会做人物与地图的碰撞,求高手!!!裸奔+跪求!!
...全文
423 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
七神之光 2013-05-20
  • 打赏
  • 举报
回复
碵蝎 2013-05-20
  • 打赏
  • 举报
回复
getRect()方法也要知道是哪边发生碰撞啊,比如右边发生碰撞就不能再向右走。。。getRect()方法只能知道碰撞了而已。。。。
LCore 2013-05-19
  • 打赏
  • 举报
回复
引用 楼主 QQ408896436 的回复:
我在用J2SE做了个超级玛丽的游戏,但是不会做人物与地图的碰撞,求高手!!!裸奔+跪求!!

正如二楼所说一般是通过Rectangle的intersects()方法做
一个略为粗糙的碰撞检测(不规则物体碰撞)
1、通过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());
stuffList.addAll(map.getWaters());
for (int i = 0; i < stuffList.size(); i++) {
Stuff a = stuffList.get(i);
Rectangle tankRectangle = new Rectangle(bullet2.getRec());
Rectangle stuffRectangle = new Rectangle(a.getX(), a.getY(), 20, 20);
if (stuffRectangle.intersects(tankRectangle)) {
flag = false;// 撞到了
break;

}

}
return flag;
}

2、矩形与圆形之间的碰撞做个小图来看

小圆有个运动轨迹,轨迹的线如果和他对着的正方形的相对某一象限的边有焦点,那么就能碰撞,边就是那一个象限的边(还要把圆半径算进去)
3、不规则形状的碰撞检测
这点比较复杂,楼主可以google、baidu
提供一些参考资料:
http://www.tink.ws/blog/as-30-hittest/
http://www.cnblogs.com/Kurodo/archive/2012/08/08/2628688.html
楼主可以简单的采用第一种方式,
超级玛丽游戏的图形还是较为规则的方形的
不过在图片处理的时候尽量将图片边角的空白去掉
不然碰撞检测不准确。

wo111180611 2013-05-19
  • 打赏
  • 举报
回复
public Rectangle getRect() { return new Rectangle(x, y, WIDTH, HEIGHT); } 根据现有对象返回他的一个方形区域 this.getRect().intersects(t.getRect()) 若两个方形区域相交 则为碰撞
wo111180611 2013-05-19
  • 打赏
  • 举报
回复
写一个getRect()方法 返回一个Rectangle 通过Rectangle 的 intersect方法实现碰撞检测
-騎豬看海- 2013-05-18
  • 打赏
  • 举报
回复
我也没做过,不过我觉得可以这样来: 你写一个两个线程,控制两个物体的移动,并且实时扫描整个坐标系,当坐标一样时,写你的“碰撞”效果。

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧