2014-03-24 104 views
1

所以我一直在試圖找到一種方法來確定我正在寫的Java遊戲的圖像中的「重疊」。現在我知道我可以創建一個盒子來跟隨包含它的教練,然後使用一個包含點來查看教練的盒子是否包含汽車/寵物小精靈的點,但是我試圖找到一個替代方法。我嘗試使用嵌套的If語句,但這些似乎不起作用。如果我的編碼有問題,或者我的思維方式有誤,請告訴我。下面是一個嵌套ifs的例子。確定「重疊」的問題

if (trainer.getPy() == squirtle.getPy() & trainer.getPx() == squirtle.getPx()){ 
    if (trainer.getPy() >= squirtle.getPy() - 50) 
     if (trainer.getPy() <= squirtle.getPy() + 50) 
      if (trainer.getPx() >= squirtle.getPx() -50) 
       if (trainer.getPx() <= squirtle.getPx() + 50) 
        trainer.dead(); 
    Skully skull = new Skully (trainer.getPx(), trainer.getPy()); 
} 
if (trainer.getPy() == pikachu.getPy() & trainer.getPx() == pikachu.getPx()){ 
    if (trainer.getPy() >= pikachu.getPy() - 50) 
     if (trainer.getPy() <= pikachu.getPy() + 50) 
      if (trainer.getPx() >= pikachu.getPx() -50) 
       if (trainer.getPx() <= pikachu.getPx() + 50) 
        trainer.dead(); 
    Skully skull = new Skully (trainer.getPx(), trainer.getPy()); 
} 

回答

0

的問題是,你的第一個條件檢查是否兩個對象都在完全相同的位置,所以所有這些if語句之後是毫無意義的更輕鬆。相反,您可能只是想檢查兩個對象的中心之間的差異是否小於50px。您可以使用絕對差異輕鬆檢查。

if (Math.abs(trainer.getPy() - squirtle.getPy()) < 50 && 
     Math.abs(trainer.getPx() - squirtle.getPx()) < 50) { 
    trainer.dead(); 
    Skully skull = new Skully (trainer.getPx(), trainer.getPy()); 
} 
+0

這很有意義。我沒有那樣想過。非常感謝! – Lilnonie