2012-10-18 108 views
3

我有一個Sprite和多個位圖作爲項目符號工作。現在問題是我希望子彈能夠非常快速地運行,但這又給我的碰撞檢測功能帶來了問題,它的工作方式是每一幀我都會在敵人和子彈上創建一個Rect並檢查重疊。Android碰撞檢測精度

現在,如果子彈非常快,它就像點「跳」,這意味着如果敵人很小,子彈「跳過」敵人,它不會被注意到。

我想知道的是,如果有一種方法可以檢測兩個移動物體之間是否會發生碰撞,或者只是看一下敵人是否在子彈的軌道上。

我通過敵人的數組,裏面的那個循環的循環迴路我所有子彈,然後創建了雙方一個矩形,並檢查是否與Rect.intersects碰撞對每個敵人和子彈進行的碰撞檢測。

子彈航向由一個固定點和觸摸輸入測量,然後計算該函數:

public void calcPoint(float x, float y) { 
    double alfa = Math.atan(x/y);//x and y are inputs 
    bulletPointX = (float) Math.sin(alfa) * speed; 
    bulletPointY = (float) Math.cos(alfa) * speed; 
} 

我不知道如何解決它,我想一​​些adivice如何做到這一點, maby的一個例子...

+0

是否子彈招:我給能得到最基本的幫助,但要了解更多信息,做一個搜索鏈接在一條直線上? – Magicode

回答

1

有幾種方法可以做到這一點,但最簡單的可能是predictive collision detection.基本上,你將運動分成時間段和檢查每個段。如果你有幾千個物體在移動,它可能不是很有效,但是在大多數情況下,它可以正常工作。

它也被一些名字所瞭解。

  • 幀獨立碰撞檢測
  • 連續碰撞檢測
  • 掃描測試
+0

謝謝,我想我會找到一個解決方案,我現在有我的lagg問題,看看這個。 –