簡體   English   中英

java-沖突檢測不起作用?

[英]java - collision detection not working?

我對Java很新。 我正在嘗試使其能夠使用箭頭鍵控制一個球,然后如果您與另一個球相撞,它將在控制台中打印一行,顯示“您輸了”或東西。

我已經完成了移動,但是我在如何使兩個球發生碰撞方面有些掙扎。 到目前為止,我已經嘗試過了(我想我在球周圍放了一個矩形,但是我真的不知道!):

public void collision() {
    Rectangle rectP = new Rectangle(player.x, player.y, player.WIDTH, player.HEIGHT);       
    Rectangle rectE = new Rectangle(Enemy.ex, Enemy.ey, Enemy.WIDTH, Enemy.HEIGHT);

    if(rectP.intersects(rectE))
    {

    System.out.println("game over");
    }
}

有人可以幫助我,並解釋我做錯了什么。

ps。 請不要只給我代碼,我想嘗試學習!!!

謝謝。

public void actionPerformed(ActionEvent e) {
    repaint();
    x += velx;
    y += vely;
}

public void up() {
    vely = -1.5;
    velx = 0;
}

public void down() {
    vely = 1.5;
    velx = 0;
}

public void left() {
    vely = 0;
    velx = -1.5;
}

public void right() {
    vely = 0;
    velx = 1.5;
}

public void keyPressed(KeyEvent e) {
    int code = e.getKeyCode();
    if (code == KeyEvent.VK_UP) {
        up();
    }
    if (code == KeyEvent.VK_DOWN) {
        down();
    }
    if (code == KeyEvent.VK_LEFT) {
        left();
    }
    if (code == KeyEvent.VK_RIGHT) {
        right();
    }
}

如果您有兩個球中心的X和Y坐標,並且知道球的半徑-這應該是一個簡單的任務。

只需計算球的中心之間的距離,並將其與球半徑之和進行比較即可。

您要求跳過公式即可:)

PS在您的代碼中看起來很奇怪的是player是小寫的,但Enemy是大寫的。是類還是對象?

好吧,我認為沖突檢測是不對的。 我認為錯誤的是計算機認為對象位於實際位置之外的其他地方。 就像有一次我嘗試制作打磚塊的槳一樣,當程序確實認為槳在另一側時,我在碰撞檢測方面遇到了問題! 您應該做的是將矩形的位置繪制到游戲上。 這樣,您可以看到計算機認為對象在哪里。 也許他們完全沒有了?

暫無
暫無

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

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