怎樣在Android開發中FPS遊戲實現的兩種方式比較

來源:互聯網
上載者:User

如何用Android平台開發FPS遊戲,其實現過程有哪些方法,這些方法又有哪些不同的地方呢?首先讓我們先瞭解下什麼是FPS

英文名:FPS (First Personal Shooting)

第一人稱視角射擊遊戲顧名思義就是以玩家的主觀視角來進行射擊遊戲。玩家們不再像別的遊戲一樣操縱螢幕中的虛擬人物來進行遊戲,而是身臨其境的體驗遊戲帶來的視覺衝擊,這就大大增強了遊戲的主動性和真實感。早期第一人稱類遊戲所帶給玩家的一般都是的螢幕光線的刺激,簡單快捷的遊戲節奏。隨著遊戲硬體的逐步完善,以及各種類遊戲的不斷結合。第一人稱射擊類遊戲提供了更加豐富的劇情以及精美的畫面和生動的音效。例如我們玩的CS、Quake系列、UT系列、榮譽勳章、使命召喚、DOOM、彩虹6號、殺手47系列、穿越火線、反恐精英Online等等遊戲。

 

 

01 private boolean drawall=false;

02  private RefreshHandler mRedrawHandler = new RefreshHandler();

03     class RefreshHandler extends Handler {

04  

05         @Override

06         public void handleMessage(Message msg) {

07          KetrisCanvas.this.update();

08          KetrisCanvas.this.invalidate();

09         }

10  

11         public void sleep(long delayMillis) {

12          this.removeMessages(0);

13             sendMessageDelayed(obtainMessage(0), delayMillis);

14         }

15     };

16     long mLastMove=0;

17     long mMoveDelay=30;

18     public void update() {

19             long now = System.currentTimeMillis();

20  

21             if (now - mLastMove > mMoveDelay) {

22                 //gameLogic(); 這裡是遊戲邏輯

23               

24                 mLastMove = now;

25             }

26             mRedrawHandler.sleep(mMoveDelay);

27         

28     }

29 public void onDraw(Canvas canvas)

30 {super.onDraw(canvas);

31  this.paint(); //這裡是繪製到緩衝螢幕

32  canvas.drawBitmap(g.offs, 0, 0, g.p);

33 }

2. [代碼][Java]代碼     跳至 [1] [2] [全屏預覽]
view source print?01 public class KetrisCanvas extends SurfaceView implements SurfaceHolder.Callback

02  

03 { 

04  

05 在構造方法完成   下面2句

06      holder = this.getHolder();//擷取holder

07      holder.addCallback(this);

08  

09  

10 @Override

11 public void surfaceChanged(SurfaceHolder holder, int format, int width,

12   int height) {

13  // TODO Auto-generated method stub

14   

15 }

16  

17 Thread t;

18 boolean isrun=true;

19 final SurfaceHolder holder;

20 @Override

21 public void surfaceCreated(SurfaceHolder holder) {

22  // TODO Auto-generated method stub

23   

24   t=new Thread(){

25   public void run()

26   { while(isrun)

27   {

28    long start=System.currentTimeMillis();

29       Canvas canvas=KetrisCanvas.this.holder.lockCanvas(null);

30     //這裡完成遊戲邏輯 

31  

32     paint();//這裡是螢幕繪製

33       canvas.drawBitmap(g.offs, 0, 0,null );

34       

35       KetrisCanvas.this.holder.unlockCanvasAndPost(canvas);

36       long end=System.currentTimeMillis();

37       if(200>end-start)

38       {

39        try{Thread.sleep(200-(end-start));}catch(Exception e){}

40       }

41   }

42   }

43  };

44  t.start();

45 }

46 @Override

47 public void surfaceDestroyed(SurfaceHolder holder) {

48  // TODO Auto-generated method stub

49  if(t!=null)

50  { isrun=false;

51  }

52 }


 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.