Java Android Rect Intersect不工作
我正在为一款使用Android的Rect类的游戏开发一个碰撞检测系统。我遇到了一个问题,程序没有检测到楼层上的相交点 下面是在level类中检测intersect的代码Java Android Rect Intersect不工作,java,android,Java,Android,我正在为一款使用Android的Rect类的游戏开发一个碰撞检测系统。我遇到了一个问题,程序没有检测到楼层上的相交点 下面是在level类中检测intersect的代码 public void checkVerticalCollision(Rect rbot, Rect rtop){ if(type != 0){ if(Rect.intersects(rtop, r)){ Log.d("CollisionCheck", "Hit Head");
public void checkVerticalCollision(Rect rbot, Rect rtop){
if(type != 0){
if(Rect.intersects(rtop, r)){
Log.d("CollisionCheck", "Hit Head");
}
//System.out.println("Bottom Hitbox" + " " + rbot.top + " " + rbot.bottom + " " + rbot.left + " " + rbot.right);
if (Rect.intersects(rbot, r)){
Log.d("CollisionCheck", "Hit Floor");
player.setJumped(false);
player.setSpeedY((byte) 0);
player.setCenterY(tileY - 40);
player.setHealth(player.getHealth() - damage);
}
}
}
public void checkSideCollision(Rect rleft, Rect rright){
if(type != 0 ) {
if(Rect.intersects(rleft,r)) {
System.out.println("in left side intersect");
player.setCenterX(tileX + 88);
player.setSpeedX((byte) 0);
}
if(Rect.intersects(rright,r)) {
System.out.println("in right side intersect");
player.setCenterX(tileX + 10);
player.setSpeedX((byte) 0);
}
}
}
头部、左侧和右侧的点击框工作正常。但是,底部的hitbox rbot不起作用,因为在intersects中永远不会返回true。所有矩形变量都以相同的方式声明和设置,所有矩形变量都将更新。我甚至渲染了复选框,以检查它是否正在使用其他矩形进行更新,并且它正在更新。我完全搞不懂为什么这行不通。有人能帮忙吗
谢谢
更新播放器类中的Rect代码:
bottom.set(centerX + 45, centerY + 65, centerX + 20, centerY + 55);
head.set(centerX + 25 , centerY + 12, centerX + 38, centerY + 4);
leftHand.set(centerX + 13, centerY + 42, centerX + 23, centerY + 20);
rightHand.set(centerX + 50, centerY + 42, centerX + 40, centerY + 20);
check.set(centerX - 40, centerY - 40, centerX + 90, centerY +100);
看起来您的矩形底部设置不正确。我假设bottom是类型,在这种情况下,要设置的参数是setint left、int top、int right、int bottom 对于底部,您已经设置了左参数和右参数,这样左参数就是右参数的右参数。例如,如果centerX为100,则将左侧设置为145,右侧设置为120,这是错误的
我认为您需要检查所有的左、右、上、下参数是否正确,因为我认为还有一些其他错误。看起来您的矩形底部设置不正确。我假设bottom是类型,在这种情况下,要设置的参数是setint left、int top、int right、int bottom 对于底部,您已经设置了左参数和右参数,这样左参数就是右参数的右参数。例如,如果centerX为100,则将左侧设置为145,右侧设置为120,这是错误的
我认为您需要检查所有的左、右、上、下参数是否正确,因为我认为还有一些其他错误。您说过下交点永远不会返回true。调试器中的值表示什么?这就是你将如何确定你的问题。你说过底部相交永远不会返回真值。调试器中的值表示什么?这就是你将如何确定你的问题。谢谢你!原来我把矩形倒过来了!谢谢你!原来我把矩形倒过来了!