我試圖讓自己的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。那麼是否有某種引擎只是用於碰撞檢測而不是整個重力的東西,還是有一些簡單的數學方法可以使用?
在此先感謝。
您仍然可以在Android中使用矩形和'intersect()',只需切換到'android.graphics.Rect'並將寬度和高度成員轉換爲左側和底部。或者那不是你要找的東西? –
我已經試過,它運行速度非常慢。有其他方法可以做到嗎? – chrypthic
你可能不會比僅僅比較整數更快。你在真實設備上試過了嗎?我問,因爲在模擬器上一切都很慢。 –