問題分析
研究JBOX2D 的遊戲引擎,對於這個JBOX2D遊戲本身的性能並不作為本文討論的重點。本文純屬個人觀點,非常希望能和一些志同道合的人探討相同的問題。大家可以上網下JBOX2D的原始碼~其實去看原始碼~你會發現JBOX2D的原始碼寫的挺好,而且沒有依賴於第三方的包,很多類都非常的原生,本質目的是為了提高jar在java項目中移植性。
首先先看一段代碼:
AABB mAABB = null;
World mWorld = null;
Vec2 mGravity = new Vec2(0.0f, 10.0f);
private final static int RATE = 10;;
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams. FLAG_FULLSCREEN ,WindowManager.LayoutParams. FLAG_FULLSCREEN);
mAABB = new AABB();
mAABB.upperBound.set(-100, -100);
mAABB.lowerBound.set(100, 100);
mWorld = new World(mAABB, mGravity, true);
}
這個事基於Android開發的在BOX2D中對世界進行了抽象化,抽象成一個有邊界和有重力的實體,為了避免在現實世界和虛擬世界中的單位不匹配,定義了比例尺:RATE 。
我們看看如何在Box2d中的世界中創建一個簡單的實體。
一個物體在世界中存在在兩個世界,一種在於它存在於這個物質世界,另外他也存在於我們的感官世界。對於整個世界來說物體相對於它只是一個質點,所以這個世界要關心的是它的質點,而對於我們的感官世界來說,物體是有形狀,一個物體的形狀大小基本可以決定他的質量,而質量相關的就是物體本身的密度屬性。