【发布时间】:2021-06-12 20:41:43
【问题描述】:
我正在为我的游戏开发一个碰撞系统,但是如果我添加多于一堵墙(这是我正在渲染的对象),我无法让它工作,碰撞系统不起作用并且我可以通过街区。
但是,如果我只留下一堵墙,碰撞可以正常工作,或者如果在循环结束时我添加了一个中断; 碰撞有效,但仅在地图的第一面墙上,其他墙壁不会发生碰撞。
有人知道如何解决这个问题吗?我已经尝试解决了 2 天,但我无法解决。
public boolean checkCollisionWall(int xnext, int ynext){
int[] xpoints1 = {xnext+3,xnext+3,xnext+4,xnext+3,xnext+3,xnext+4,xnext+10,xnext+11,xnext+11,xnext+10,xnext+11,xnext+11};
int[] ypoints1 = {ynext+0,ynext+8,ynext+9,ynext+11,ynext+12,ynext+15,ynext+15,ynext+12,ynext+11,ynext+9,ynext+8,ynext+0};
int npoints1 = 12;
Polygon player = new Polygon(xpoints1,ypoints1,npoints1);
Area area = new Area(player);
for(int i = 0; i < Game.walls.size(); i++){
Wall atual = Game.walls.get(i);
int[] xpoints2 = {atual.getX(),atual.getX(),atual.getX()+16,atual.getX()+16};
int[] ypoints2 = {atual.getY(),atual.getY()+16,atual.getY()+16,atual.getY()};
int npoints2 = 4;
Polygon Wall = new Polygon(xpoints2,ypoints2,npoints2);
area.intersect(new Area(Wall));
if(area.isEmpty()){
return true;
}
}
return false;
}
【问题讨论】:
-
欢迎来到 Stack Overflow。请通过tour 了解 Stack Overflow 的工作原理,并阅读How to Ask 以了解如何提高问题的质量。然后edit你的问题包括你拥有的完整源代码作为minimal reproducible example,其他人可以编译和测试。请看:What Do You Mean “It Doesn't Work”?
-
您确认
Area类按预期工作了吗? -
区域正常,碰撞也正常,但是如果我在地图上添加多于一面墙,碰撞停止工作。
标签: java collision-detection polygon collision