簡體   English   中英

2D游戲中的碰撞

[英]Collision in 2D game

我正在嘗試制作一個小游戲,其中有一個可以用箭頭控制的小方塊。 當多維數據集與另一個塊對象相交時,我希望它返回並停在塊對象的邊緣。 因此,基本上,我希望我的塊在與塊對象相交時停止,而是將塊移入其中,然后在再次移動時跳回。 我如何才能使其首先檢查它是否相交以及是否不會移動?

我的繪畫類擴展了JPanel並且正在用paintComponent繪畫。

 if(keyCode == e.VK_RIGHT) {
        if(xRightCollision()){
            hero.x -= xVel;
        }
        else {
            hero.x += xVel;
        }
    }

假設立方體在塊對象的邊緣,但是還沒有相交,所以我向右按它並移入它,然后再次向右按它跳回了5個像素(xVel = 5)。

public boolean xRightCollision(){
    for(int i = 0; i < obstacles.size(); i++) {
        if (hero.intersects(obstacles.get(i))) {
            return true;
        }
    }
    return false;
}

實際上,我已經在JFrame上使用paint()嘗試了類似的操作,並且由於必須在此處調用repaint() ,因此我可以先檢查然后重新繪制。 我不太了解paintComponent工作原理,因為您無法控制何時應該重新繪制。

只需使用一個臨時值來檢查立方體是否與障礙物相交,並在必要時重置為原始位置:

if(keyCode == e.VK_RIGHT) {
    //backup of the cubes position
    int tmp = hero.x;

    //move the hero to the right
    hero.x += xVel;

    if(xRightCollision())
        //cube intersects with an obstacle -> restore original position
        hero.x = tmp;
}

暫無
暫無

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

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