2011-11-15 33 views
1

我試圖讓自己的Android工作,但我失敗了。我剛纔所說的剛體碰撞檢測的意思是,基本上有一堵牆,一旦玩家碰到牆,它就不能通過。我試圖使用Box2D,Emini引擎,PPhys2D,Phys2D,或者他們沒有足夠的教程,或者他們真的很複雜。我寫這跟一般的Java遊戲使用方法:我需要某種形式的Android剛體碰撞檢測引擎

//package 
import java.awt.*; 
import java.awt.event.*; 
import javax.swing.*; 
public class DCDE { 
int plx, ply, obx, oby, obw, obh, plw, plh; 
Rectangle north; 
Rectangle east; 
Rectangle south; 
Rectangle west; 
boolean debug=true; 
public void debug(Graphics g) 
{ 
    Graphics2D g2 = (Graphics2D)g; 
    if(debug) 
    { 
     if(!(north==null)&&!(east==null)&&!(south==null)&&!(west==null)){ 
      g2.setColor(Color.YELLOW); 
      g2.draw(north); 
      g2.draw(east); 
      g2.draw(south); 
      g2.draw(west); 
      g2.fill(north); 
      g2.fill(east); 
      g2.fill(south); 
      g2.fill(west); 
     } 
    } 
} 
public void detect(int plxj, int plyj, int obxj, int obyj, int obwj, int obhj, int plwj, int plhj) 
{ 
    plx=plxj; 
    ply=plyj; 
    obx=obxj; 
    oby=obyj; 
    obw=obwj; 
    obh=obhj; 
    plw=plwj; 
    plh=plhj; 
    Rectangle playr = new Rectangle(plx, ply, plw, plh); 
    Rectangle objr = new Rectangle(obx, oby, obw, obh); 
    north = new Rectangle((obx), (oby-1), obw, 1); 
    east = new Rectangle((obx+obw), (oby), 1, obh); 
    south = new Rectangle((obx), (oby+obh)+1, obw, 1); 
    west = new Rectangle((obx-1), oby, 1, obh); 
    if(playr.intersects(north)){ 
     ply=(oby-plh-1); 
     if(debug)System.out.println("NORTH"); 
    } 
    if(playr.intersects(east)){ 
     plx=(obx+obw+1); 
     if(debug)System.out.println("EAST"); 
    } 
    if(playr.intersects(south)){ 
     ply=(oby+obh+1); 
     if(debug)System.out.println("SOUTH"); 
    } 
    if(playr.intersects(west)){ 
     plx=(obx-plw-1); 
     if(debug)System.out.println("WEST"); 
    } 
} 
} 

這對計算機java遊戲我做了工作得很好,但現在我需要這樣的東西上面,但爲Android。那麼是否有某種引擎只是用於碰撞檢測而不是整個重力的東西,還是有一些簡單的數學方法可以使用?

在此先感謝。

+0

您仍然可以在Android中使用矩形和'intersect()',只需切換到'android.graphics.Rect'並將寬度和高度成員轉換爲左側和底部。或者那不是你要找的東西? –

+0

我已經試過,它運行速度非常慢。有其他方法可以做到嗎? – chrypthic

+0

你可能不會比僅僅比較整數更快。你在真實設備上試過了嗎?我問,因爲在模擬器上一切都很慢。 –

回答

1

爲什麼不只是使用已經在android上工作的圖形引擎,如UnityAndEngine。我是他們已經有一些內置的東西以及一些其他好東西。

+0

我更喜歡那種真正瞭解幕後故事的人。對於AndEngine, – chrypthic

+0

+1。你不會逃避必須學習一些關於Box2d的知識,但是你想要做的事情在許多例子中都有涉及。 – mmeyer