说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

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

HTML文档下载 WORD文档下载 PDF文档下载
FPS (First Personal Shooting)第一人称视角射击游戏顾名思义就是以玩家的主观视角来进行射击游戏。本文详细介绍了此类游戏实现的方式。

如何用Android平台开发FPS游戏,其实现过程有哪些方法,这些方法又有哪些不同的地方呢?首先让我们先了解下什么是FPS

英文名:FPS (First Personal Shooting)

  第一人称视角射击游戏顾名思义就是以玩家的主观视角来进行射击游戏。玩家们不再像别的游戏一样操纵屏幕中的虚拟人物来进行游戏,而是身临其境的体验游戏带来的视觉冲击,这就大大增强了游戏的主动性和真实感。早期第一人称类游戏所带给玩家的一般都是的屏幕光线的刺激,简单快捷的游戏节奏。随着游戏硬件的逐步完善,以及各种类游戏的不断结合。第一人称射击类游戏提供了更加丰富的剧情以及精美的画面和生动的音效。例如我们玩的CS、Quake系列、UT系列、荣誉勋章、使命召唤、DOOM、彩虹6号、杀手47系列、穿越火线、反恐精英Online等等游戏。

方式1.

  private boolean drawall=false;
 private RefreshHandler mRedrawHandler = new RefreshHandler();
    class RefreshHandler extends Handler {

        @Override
        public void handleMessage(Message msg) {
         KetrisCanvas.this.update();
         KetrisCanvas.this.invalidate();
        }

        public void sleep(long delayMillis) {
         this.removeMessages(0);
            sendMessageDelayed(obtainMessage(0), delayMillis);
        }
    };
    long mLastMove=0;
    long mMoveDelay=30;
    public void update() {
            long now = System.currentTimeMillis();

            if (now - mLastMove > mMoveDelay) {
                //gameLogic(); 这里是游戏逻辑
             
                mLastMove = now;
            }
            mRedrawHandler.sleep(mMoveDelay);
        
    }
public void onDraw(Canvas canvas)
{super.onDraw(canvas);
 this.paint(); //这里是绘制到缓冲屏幕
 canvas.drawBitmap(g.offs, 0, 0, g.p);
}

在适当位置执行update();

方式2.

public class KetrisCanvas extends SurfaceView implements SurfaceHolder.Callback

{  

在构造方法完成   下面2句
     holder = this.getHolder();//获取holder
     holder.addCallback(this);


@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
  int height) {
 // TODO Auto-generated method stub
 
}

Thread t;
boolean isrun=true;
final SurfaceHolder holder;
@Override
public void surfaceCreated(SurfaceHolder holder) {
 // TODO Auto-generated method stub
 
  t=new Thread(){
  public void run()
  { while(isrun)
  {
   long start=System.currentTimeMillis();
      Canvas canvas=KetrisCanvas.this.holder.lockCanvas(null);
    //这里完成游戏逻辑  

    paint();//这里是屏幕绘制
      canvas.drawBitmap(g.offs, 0, 0,null );
      
      KetrisCanvas.this.holder.unlockCanvasAndPost(canvas);
      long end=System.currentTimeMillis();
      if(200>end-start)
      {
       try{Thread.sleep(200-(end-start));}catch(Exception e){}
      }
  }
  }
 };
 t.start();
}
@Override
public void surfaceDestroyed(SurfaceHolder holder) {
 // TODO Auto-generated method stub
 if(t!=null)
 { isrun=false;
 }
}

转载自:http://blog.csdn.net/sdhjob/archive/2009/12/22/5054455.aspx

从0到1只需一天:Twitter后PC时代物联网“敏捷”开发之路的探索 机械生物已经面世 只少个“大脑”而已 百度正式宣布3.7亿美元收购PPS视频业务 比尔·盖茨:iPad让人失望 用户需要Surface Dropbox将于今年夏天举办有史以来的第一场开发者大会 Clustrix Sierra分布式数据库系统:云计算时代的MySQL 英特尔出杀手锏 发布低功耗、高性能Silvermont微架构 10大最实用的Raspberry Pi扩展设备推荐 主流浏览器性能测试,IE10百分百完胜! TortoiseSVN的基本操作 再见,Fireworks! 投资者告诉诺基亚CEO:他们快没耐心了 直接拿来用!最火的Android开源项目(二) 营收奇迹:三消游戏Candy Crush Saga成功启示录 马化腾对话李连杰:移动互联网的能量有多大? UC与趋势科技携手,移动浏览器加固安全 乐视发布超级电视X60 售价6999元 巨头们抢滩或已结束?EMC掀起首场SDN登录战 CloudStack创始人梁胜:让中国软件走向世界 ArduinoDroid:让你在Android设备上开发Arduino 码农们的机器人:LEGO MindStorms EV3 详解 JavaScript 中的 this 对话PaaS平台dotCloud布道师:“轻量级”与“重量级”虚拟化 微软:谷歌企业生产力软件依然不行 IT旅途——程序员面试经验分享 17岁女高中生赢得编程马拉松大赛冠军 雅虎宣布开发新的搜索工具 创新用户界面 前谷歌高管给初入职场新人的14条忠告 业界良心 Facebook下一步将开源交换机 Google Glass:未上市先遇阻 TIOBE 2013年5月编程语言排行榜:Objective-C再度反超C++ 各位,我现在的操作系统是win2k professional 我现在想运行.jsp程序。我应该有什么样的准备。用什么工具做jsp.服务器怎么配置。这些东西都那里去下载。请指点。不胜感激! 急,listbox的columns设置为大于1后,它的这几个列怎样添加字符 一个弱智的问题: 怎样判断实例是否存在?? 再议 在VB中如何创建三层结构的应用程序 紧急问题!Crystal Report是否不支持中文的? 如何得到系统的开关机时间(在WIN2K下)???急 怎么实现这种嵌套的查询结果?(急急求救) 对象的handle,hwnd和指向此对象的指针之间是什么关系??? JavaBean+jsp+Tomcat4.0?把我搞醉了 一个非常棘手的问题,都吃不下,睡不着了,帮忙啊,分不够的话,再开数贴。 高分请问:会跳舞(有音乐)的圣诞老人(玩具,大约有电脑显示屏一般高度)在上海买多少钱,急急急 已有CBitmap m_Bitmap,如何求对应的HDIB 在音乐文件中加入一个代码…… 这种情况下如何用进程条控件? 看了一通sps的sdk,看的我头大的不得了,看来英语还是不过关阿 我要把格林威治平时转换成当地时间用什么函数呢???? 用SQL语句显示记录集中的倒数200条记录,及显示从第几条到第几到的记录?? 问:vb.net采用的是c#,那么在ms.net里面到底有没有visual c#.net??? 高手请进!ADO问题 给我已给在javabean里面使用HttpServletRequest对象的例子好吗?谢谢你了,具体到里面看看可以吗? 在office2000中打印来自matlab53的图形,总是提示word内存不足,word自行关闭。请问为何? 开开关关的窗口 用VC编写操纵数据库方面的COM组件有前途吗? 请问如何将CString中的字符串赋给char* ADODB.Connection问题,急!! 急急! 在javabean里面使用HttpServletRequest对象的例子好吗?谢谢你了,具体到里面看看可以吗? 河南的程序员考试成绩出来了没有?都快把大家急疯了! 一个类的四个问题?this指针等等,欢迎大家的光临。 请大家帮个忙!我的PARADOX数据库有660M,但是在读取的时候出现‘BLOB HAS BEEN MODIFIED‘!! 请问哪里有ado数据库引擎下载,谢谢~! BDE错误$2109 如何得到“我的文档”里的IShellView指针? SOS!各位帮帮我呀!“实现汉诺塔” 幫忙看一下下面這段代碼有什么問題? 改进后的开开关关窗口特别酷 请问在VB6与VB.NET在数据库方面有多大的区别呀?? 关于C语言 寻找将 AUTOCAD 文件格式转换成 PDF 格式的软件 谁有包含开发接口的OCR软件? 求助:没有紧急修复软盘,怎样恢复win2kserver的双启菜单。 请问怎么得到DATAGRID1中记录的总条数! 转发:一粒沙子的爱情故事 公司發過年禮物了 ,哎 ,原來是一塊石英表 ,雖然是情侶表 ,卻只發一塊 ,不是一對 ,你們呢!..... ??有解密高手吗?或者哪里有这样的论坛?? 怎样用多线程显示多个form? VB串口发送大数据量时其他程序没有反应? 这句sql语句怎么写?低手请教! 数据库高手请进,报表问题!!! 请介绍VC测试内存泄漏的好工具. select number from table需要分别得到所有的值,如果做? 谁能科学的回答下先有鸡还是先有蛋最好拿出数据 这是什么昆虫? 甲乙两站相距360Km一列快车从甲站开往乙站,每小时60km,快车行驶半小时后,另外一列车从乙站,每小时行驶48km,快车行驶几小时与慢车相遇? 甲,乙两站相距480km,一列慢车从家站开出,速度为90km/h,一列快车从乙站开出,速度为140km/h,根据这个回答下面的题目, 媒介昆虫种类有哪些?举例说明 动物与动物之间的天敌有哪些? 甲、乙两车站相距480km,一列慢车从甲站开出,每小时行60km,一列快车从乙站开出,每小时行90km.设两车同时开出,相背而行,xh后相距600km,方程是(90-60)x=480吗? 王大爷在自家墙外围了一个养鸡场.围养鸡场的长是22,其中一条边是22m,求养鸡场的面积 蛇的天敌忘了是什么动物了长得很像松鼠?长得很小不是黄鼠狼,有点象老鼠蛇不是他的主食只有饿急了才吃 甲、乙两车站相距480km,一列慢车从甲站开出,每小时行60km,一列快车从乙站开出,每小时行90km.两车同时开出,同向而行,且慢车在前,xh后快车追上慢车,方程是? 用关联词把两个句子组成一句话.养鸡场主人有事没事.养鸡场主人喜欢散布谣言. 眼睛蛇的天敌是什么动物 A.B两地相距480KM,一列慢车从A地出发,每小时行60KM,一列快车从B地出发,每小时行驶90KM,快车提前30分钟出发,两车相向而行,慢车行驶了多长时间后两车相遇. 一个长方形养鸡场,一条长边利用原一墙,其余三条是竹篱笆,已知竹篱笆共长24米,宽是长的2分之一,养鸡场的面积是多少平方米? 蛇的天敌是什么动物 甲乙两地相距480km,一列快车从甲地开出,每小时行驶120km,一列慢车从乙地出发,每小行驶80km.若两车同时开出,同向而行,问快车用多少小时追上慢车?用 方 一条关于养鸡场的问题.速求~要建一个面积为150m²的长方形养鸡场,养鸡场的一边靠着原有的一面墙,墙长a米,另三边用竹篱笆围城,篱笆总长为35m.(1)求养鸡场的长与宽(2)当a<15或15≤a 怎么样办一个养鸡场山区养殖草鸡!按10000只的规模,大概投资多少钱?前景如何?请高手和专家指点指点!感谢! 甲乙两地相距480km.一列快车从甲地出发,每小时行驶120km,一列慢车从乙地开出,每小时行驶80km若辆车同时出发,相向而行,快车行驶一小时后,因故障停车20分钟后继续行驶,问慢车出发几小时两车 爷爷在自家墙外围了一个梯形养鸡场,围养鸡场的篱笆总长是25米,其中一条边长8米,求这个养鸡场的面积. 客货车两辆车同时从上海和南京相对开出.客车每小时行62km,货车每小时行60km,精工2.5小时两车还相距4.5km相遇.铁路长? 甲乙两地相距480km,一列慢车从甲地开出,速度为80km/h;一列快车从乙地开出,速度为120km/h.1.如果两车相向而行,在他们同时开出xh(未相遇)时,两车相距多少千米?2.如果两车相背而行,在他们同时 养鸡场主要用什么消毒? 客车和货车同时从相距438km的两地相对开出,客车每小时行60km,货车的速度是客车速度的4/5,几小时后两车相距6km? 甲乙俩地相距200km,快车走120km/h,慢车走80km/h,慢车从甲地出发,快车从乙地出发,(1)如果两车同时出发,相向而行,出发后几时相遇(2)如果俩车同时出发,同向而行,出发后几时相遇 养鸡场如何消毒 客车与货车同时从相距430km的两地相对开出.客车每小时行60km,货车速度是客车速度的五分之四.几小时后两车相距70千米? 某农场要建一个长方形的养鸡场,鸡场的一边靠墙(墙长25m),另外三边用木栏围成,木栏长40m.鸡场的面积能达到列出式子 养鸡场消毒池多久换一次? 客、货两辆车同时从上海和南京相对开出.客车每小时行62千米,货车每小时行60千米,经过2.5小时两车还距4.5千米相遇.上海到南京的铁路长多少千米? 养鸡场投资 建设一个1W羽规模的养鸡场,大概要投资多少?年后养鸡做准备的~· 建一个一W只的养鸡场要多长时间 客车与货车从AB两地相对开出,客车每小时行60KM,货车每小时行全程的1/15,相遇时客车所行的路程是货车的5/4,求AB的距离 王大爷在自家墙外围成一个养鸡场,围鸡场的篱笆的总长是22m,其中一条边是8m,求养鸡场的面积. 养鸡场地如何消毒? 狼的三大天敌是什么 先有鸡还是先有蛋,科学的回答 王大爷在自家墙外围成一个养鸡场,围鸡场的篱笆的总长是22米,其中一条边是8m,求养鸡场的面积 世界上的昆虫种类为什么那么多.让我们查查为什么昆虫种类那么繁多,麻烦大家拜拜忙啊. 先有鸡还是先有蛋?要有科学道理.要清楚. 甲、乙两地相距360km,慢车每小时行80km,快车与慢车的速度比是5:4.两车分别从甲、乙两地同时开出,经过几小时相遇 一辆客车从甲地到乙地要6小时,一辆货车从乙地到甲地要8小时,现在两车相向而行相遇时离乙地60KM两地相距两地相距几千米 请问,是先有鸡还是先有蛋?请给个科学的回答! 两车从相距360km的甲乙两地相向而行,经过4小时相遇,已知快车与慢车的速度比是5:4,慢车每小时行多少千米? 一列客车,从甲地开往乙地,去用每小时60km,返回时每小时90km,往返平均速度是多少?(60+90)/2180*275km 是先有鸡还是先有蛋?要科学的回答! 甲乙两地相距80KM,快车和慢车同时从甲地到乙地,快车比慢车早20分钟到.快慢车速度比4:3,那么慢车速度多快慢车速度比4:3,那么慢车速度多少? 客车从甲地到乙地要6小时;货车从乙地到甲地要8小时.两车同时分别从两地出发相对开出,相遇时货车行了240km.甲乙俩地相距多少千米?算式 要仔细 急 甲乙两地相距480km,一列快车从甲地开出120km/小时,一列慢车从乙地开出80km/小时 1若两车同时出发,相向而行,快车行驶1小时后,因故障停车20分钟后继续行驶,问慢车出发几小时两车相遇.2若两车 快慢两车同时从甲乙两地相向而行,快车速度45km,慢车速度20km,两车三次相遇后快车又行360km相遇,求全程快慢两车同时从甲乙两地相向而行,快车速度45km,慢车速度20km,两车三次相遇后快车又行360 我想知道养鸡场怎么办?需要什么什么条件?具体知道养鸡场的规模怎么确定、平面怎么布置、成本预算、怎么向政府贷款? 昆虫怎么分类 请问有哪些好的养鸡场名 北京和呼和浩特相距660km,一列慢车从呼和浩特开出,每时40km,一列快车从北京开出,每时60km,两车同时开两车同时开出,相向而行.如果快车先出发一小时,慢车才开出,快车出发几分后两车相遇?( 先有鸡还是先有蛋,我要科学,科学, 两列火车从甲乙两地相对开出,4小时后在距终点48千米处相遇,慢车是快车速度的5\7,各车的速度是多少,路程? 甲乙两地相距162km,一列慢车从甲站开出,每小时走48kn,一列快车从乙站开出,每小时走60km,1.两列火车同时相向而行,多长时间可以相遇?2.两车同时反向而行,几小时后两车相距270km?3.两车相向而行, 先有鸡还是先有蛋!从科学的角度解答 这是何种虫类?晚上的时候这只小东西飞到我的电脑屏幕上,让我眼前一亮,它身上的金色闪闪发光,很美,不知这是何种昆虫? 甲、乙两地相距360km,慢车从甲站开出每小时行驶40km,慢车开出40min后,快车从乙站开出,每小时行驶60km.问:慢车开出多少小时后两车相遇?(方程)
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn