嘿傢伙我正在做一個2D的Java遊戲,我想弄清楚如何製作一個好的碰撞代碼。我目前使用下面的代碼:Java 2D碰撞?
public void checkCollision() {
Rectangle player_rectangle = new Rectangle(player.getX(),player.getY(),32,32);
for(Wall wall : walls) {
Rectangle wall_rectangle = new Rectangle(wall.getX(), wall.getY(), 32,32);
if (player_rectangle.intersects(wall_rectangle)) {
Rectangle intersection = (Rectangle) player_rectangle.createIntersection(wall_rectangle);
if (player.xspeed > 0) {
player.x -= intersection.getWidth();
}
if (player.yspeed > 0) {
player.y -= intersection.getHeight();
}
if (player.xspeed < 0) {
player.x += intersection.getWidth();
}
if (player.yspeed < 0) {
player.y += intersection.getHeight();
}
Print(Integer.toString(intersection.width) + ", " + Integer.toString(intersection.height));
}
}
}
有了這個代碼,它工作正常,如果你按下一個按鍵,但如果按向下和向左例如玩家將在一些隨機的方向飛去。
下面是類型的映射我有一個畫面:
我建議你使用box2d而不是自己做java。 – FUD
[Java平滑2D矩形碰撞?]的可能的重複(http://stackoverflow.com/questions/7753549/java-smooth-2d-rectangle-collision) –
我已經標記爲您的前一個線程的副本。如果它不是重複的(出於某種原因我錯過了),解釋原因很明智。 –