Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> 【Android+box2D游戲開發彈弓類游戲】3、box2d物理引擎登場和創建游戲世界

【Android+box2D游戲開發彈弓類游戲】3、box2d物理引擎登場和創建游戲世界

編輯:Android開發實例

前一章中,我們創建了游街場景,這一章中,我們開始最重要的一章,創建游戲世界,期待已久的box2d物理引擎也要登場了!

六.創建游戲世界

之前所做的,都是在游戲場景中畫出一些靜態圖片。不能多物理場景進行模擬。接下來就要創建一個模擬的世界。我們的游戲就將在這個世界中進行模擬。在創建游戲世界之前要確定已經引入了最新版本的jbox2d。 但前jbox2d的最新版本為2.1.2。接下來的代碼都是針對2.1.2進行開發的。

1. 模擬世界

需要添加一些變量

  1. //添加一個世界需要的變量--->>>  
  2.     private final float RATE = 30; //屏幕到現實世界的比例 30px:1m;為了能夠真實的模擬現實世界,在jbox2d中,所有的單位都是以米為標准的。所以需要設定一個屏幕到現實世界的比例。在屏幕中30像素代表現實世界中的1米。  
  3.     private World world; //物理世界  
  4.     private Vec2 gravity;// 聲明一個重力向量對象  
  5.     private float timeStep = 1f / 60f;// 物理世界模擬的的頻率  
  6.     private int iterations = 10;// 迭代值,迭代越大模擬越精確,但性能越低  
  7.    
  8. 然後再MainView構造方法中對變量進行初始化。  
  9. // --添加一個物理世界--->>  
  10.     gravity = new Vec2(0f, 10f); // 模擬顯示世界的重力 橫向重力為0,縱向重力為10  
  11.     world = new World(gravity, true); // 為游戲世界添加重力,並且使世界處於睡眠狀態,當物體進行改變時,在喚醒世界。這樣可以很好的節省系統資源。 

通過以上的代碼,已經模擬出了一個游戲世界。

2. 在世界中創建物體

游戲世界是由各種各樣的物體組成的,下面介紹如何創建一個物體。分為以下六步。

  • 設置形狀
  • 創建夾具
  • 為夾具綁定形狀
  • 創建剛體
  • 通過剛體在世界中創建物體
  • 為物體綁定夾具

下面介紹一些剛體。以下是百度百科的解釋:在任何力的作用下,體積和形狀都不發生改變的物體叫做剛體(Rigid body)。在物理學內,理想的剛體是一個固體的,尺寸值有限的,形變情況可以被忽略的物體。不論有否受力,在剛體內任意兩點的距離都不會改變。在運動中,剛體上任意一條直線在各個時刻的位置都保持平行。

下面創建一個方法CreateFloorBody()。用來創建地面。

3. 創建大地

此時已經創建了世界。但是這個世界是無限延伸的,為了更好的模擬現實世界。接下來需要為這個世界添加大地。

四個參數分別為:x軸位置,y軸位置,寬度,高度

  1. public Body createBorderBody(float x,float y,float width,float height)    {  
  2.      
  3.     PolygonShape ps = new PolygonShape();//創建形狀  
  4.     ps.setAsBox(width/2/RATE, height/2/RATE);//形狀為一個矩形  
  5.      
  6.     FixtureDef fd = new FixtureDef();//創建夾具  
  7.     fd.shape = ps;//為夾具綁定形狀  
  8.     fd.density = 0;//設置密度,當密度為0時,這個物體為靜止狀態。  
  9.     fd.friction = 0.8f;//設置摩擦力  
  10.     fd.restitution = 0.3f;//設置恢復力  
  11.      
  12.     BodyDef bd = new BodyDef();//創建剛體  
  13.     bd.position.set((x+width/2)/RATE, (y+height/2)/RATE);//創建剛體范圍  
  14.     bd.type = BodyType.STATIC;//設置剛體類型,設置為靜態剛體  
  15.      
  16.     Body body = world.createBody(bd);//創建物體並制定剛體  
  17.     body.createFixture(fd);//為物體制定夾具  
  18.      
  19.     return body;  
  20.  } 

方法有了,接下來就要定義地面變量

private Body floorBody;

在surfaceCreated方法中創建floorBody物體

floorBody = CreateFloorBody(0, ScreenH-FLOOR_HEIGHT, gameWidth, FLOOR_HEIGHT);

此時第一個物體創建完成。有了大地,模擬的世界就更加真實了。此時運行環境還不能看出任何效果。但是,我們的游戲世界確確實實的存在了。

不要著急,我們會在下一章節中創建世界中的物體----》發射器。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved