zoukankan      html  css  js  c++  java
  • 怎样在Android开发中FPS游戏实现的两种方式比较

    怎样在Android开发中FPS游戏实现的两种方式比较

    如何用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, 00, g.p);
    33 }

    2. [代码][Java]代码     跳至 [1] [2] [全屏预览]

    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, 00,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 }
  • 相关阅读:
    Jenkins部署war包到tomcat7,报错
    SVN的 安装
    Eclipse中使用Maven,报错“$MAVEN_HOME”
    fiddler模拟限速实战
    maven 笔记:maven Could not create the Java Virtual Machine
    maven项目目录结构 学习笔记
    Maven的安装学习笔记
    eclipse+PyDev遇到字符UTF-8的问题
    接口测试SoapUI参数化之Datasource20151002
    随感反思20150928
  • 原文地址:https://www.cnblogs.com/dyllove98/p/3167933.html
Copyright © 2011-2022 走看看