2011-07-13 124 views
1

我是新來的機器人。如何檢測兩個物體之間的碰撞?是否有可能使用精靈,就像在j2me?如何使用精靈在Android(遊戲)

在J2ME:

Sprite s =new Sprite(img,img.getWidth/5,img.getHeight) 
s.nextFrame(); 
s.move(5,0); 

Sprite s1 =new Sprite(img1,img1.getWidth/5,img1.getHeight) 
s1.nextFrame(); 
s1.move(-5,0) 
if(s1.collidesWith(s,true)) 
{ 
    /* ... */ 
} 

我怎麼做這在Android中?

+0

一個精靈不過是一個圖像,它具有繪製座標的地方。我不知道是否有相關的類,但使用矩形檢測碰撞非常容易,你可以自己做。 –

+0

那麼如何在android中檢測碰撞。任何示例示例? – JohnRaja

+0

我找到了一個解決方案。我正在使用Andengine進行遊戲開發 – JohnRaja

回答

1

如果你不想自己做,那麼最簡單的方法可能是使用矩形類,或RectF的情況下,你需要花車:

http://developer.android.com/reference/android/graphics/Rect.html

http://developer.android.com/reference/android/graphics/RectF.html

最後,您可以使用包含圖像的矩形進行碰撞檢測。它可以用其他形狀來完成,但它更復雜。您可以使用intersect(Rect)方法來檢測交叉點。也不要忘記檢查包含,這是這種情況:

------------ 
    |   | 
    | ----- | 
    | | | | 
    | ----- | 
    |   | 
    ------------ 

使用contains(Rect)方法。如果你的精靈移動得太快以至於相交方法不能檢測到任何東西(在遊戲循環迭代中它們不會發生碰撞,並且在接下來的迭代中它們在另一個迭代中),這是必要的。在這種情況下,你必須檢查兩個相互碰撞的精靈。對於路口,這是足以與一個做到這一點:

static boolean collide(Rect r1, Rect r2){ 
     if(r1.intersect(r2) || r1.contains(r2) || r2.contains(r1)){ 
      return true; 
     } 
     return false; 
    } 

有上淨2D遊戲優秀教程,也有許多可供學習的源代碼,包括Android的。看看這些東西總是值得的。