簡體   English   中英

Android Rect相交不起作用

[英]Android Rect Intersect not working

我正在為使用Android的Rect類的游戲開發碰撞檢測系統。 我遇到了一個問題,該程序未檢測到樓層上的相交。

這是在關卡類中檢測相交的代碼。

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)不起作用(因為相交永遠不會返回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 我假設bottomRect類型,在這種情況下要set的參數是set(int left, int top, int right, int bottom)

對於bottom ,您已設置了left參數和right參數,以使left在right的right 例如,如果centerX100 ,則將left設置為145 ,將right設置為120 ,這是錯誤的方法。

我認為您需要檢查所有的leftrighttopbottom參數是否正確,因為我認為還有其他一些錯誤。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM