[英]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.