2011-07-11 64 views
0

說明:Android的碰撞檢測

我有這幾乎是現在完成一個項目,但我發現碰撞是不是真的工作。這是一種類似蛇的遊戲,可以通過觸摸屏進行控制,因此可以使用銳利的(?,抱歉的德語)角度。此刻,我只是留下一點寬容(忽略前兩個精靈)來啓用一些轉身。主要問題是精靈正在旋轉,導致超大尺寸的碰撞盒。我沒有使用任何遊戲引擎或OpenGL。

碰撞代碼: OFFSETX & OFFSETY是位圖的寬度或高度/ 2,被稱爲對蛇的頭部。在蛇(鳥)每個鏈接是一個可放置

public boolean doesHit(Placeable p) { 
    int xLen = Math.abs(this.x - p.x); 
    int yLen = Math.abs(this.y - p.y); 
    if (bmp != null) { 
     if (xLen < offsetX + p.offsetX && yLen < offsetY + p.offsetY) 
      return true; 
    } else { 
     if (xLen < Bird.BIG_W[Bird.mUseBird]/2 
       && yLen < Bird.BIG_H[Bird.mUseBird]/2) 
      return true; 
    } 
    return false; 
} 

TL; DR /問題:

有沒有辦法轉動Rects,然後比較它們(優選的,因爲遊戲已經結束除此之外)?或者最簡單的方法是移植到OpenGL /遊戲引擎?

回答

2

最好的選擇是去OpenGL並使用與相交的旋轉多邊形。

但是,對於快速入侵,我會改變doHit()例程,將精靈視爲圓而不是矩形。這樣,旋轉時它們不會在邊界外生長。價格是碰撞檢測在角落裏會很糟糕。

+0

這很有道理。但我想不出實現它的方式。你會怎麼做? – SBoss

+0

試試http://fypandroid.wordpress.com/2011/07/03/how-to-calculate-the-intersection-of-two-circles-java/ –