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

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

移动电商:更喜欢用HTML5代替原生APP Talkingdata行业预警:移动游戏正在变成红海 微软无视W3C 拒绝遵循WebRTC标准 Linux下使用MongoDB+GridFS实现备份作业的优化和监视 AWS建新数据中心 老用户获益不易 铜导线退出历史舞台 激光传导速度将达100G bps 大众点评推出首个O2O开放者平台:高德、盛大加入 从APM角度上看:NoSQL和关系数据库并无不同 新浪微博商业化:大树底下真的好乘凉吗? 亲爱的GitHub,我们怎么访问不了你? 经典神作《魂斗罗》iOS版今日上线 专访最强夫妻店:“神庙逃亡2”开发背后的故事 我们做错了什么?3周了,一毛钱也没赚到! 开源产品系列:简单强大的模板语言JSON Template 十年历史的KDE bug修复 为什么函数式编程在Java中很危险? Android平台获X11协议支持,手机变身绘图板 Rackspace通过OpenStack和定制OCP服务器节省40%成本 美国人是如何利用大数据的应用来防止流感的蔓延 W3C北航总部成立:招兵买马增强中国标准声音 Mozilla推出开发者预览版Firefox OS智能手机 强强联合?传微软投30亿参与Dell私有化 微软发布Windows Phone 7.8 SDK更新 Amazon账号将支持内付费 道具可登畅销榜 裸照门:500px应用被苹果踢出App Store APP的魔法:三个杭州小伙做手游吸金千万 Facebook与Google,巨人们将在移动端决胜负 移动广告量起来了!2013年绩效营销将成主流 Fedora欲以MariaDB取代MySQL 将节能进行到底:Facebook为冷存储寻求廉价闪存 谷歌Q4财报净利润28.86亿美元 超分析师预期 电影收费网站帐号共享,喜欢看电影的朋友进来。。。 大家做的基于GIS的软件,都实现一些什么功能啊?来者有分 我想用delphi在前端输入7位小数点,怎幺做? 求助 喜欢CS的朋友请进来 各位高手:IIS 不解析asp页面是什么原因? 我想用delphi在前端输入7位小数点,怎幺做? sql7数据库使用中的奇怪错误!!! 谁能告诉我这是怎么回事啊?急!在线等,分不够在加,马上解决马上结恬! 怎样把日期转化为星期 一个关于建立文件管理窗口的问题 我想在3dmax中的立方体顶面贴图,其他面不动,如何实现? 如何在DataGrid中加入CheckBox,并确定是否被选中?急!!! 关于用户自定义page类的问题 存储过程中IF EXISTS(select @result=aaa from tbl)提示等号附近有语法错误!!! 请问除了设置Anchor属性外如何保证窗体放大后组件的位置和大小? 如何在BCB中动态创建对象? SOS 救火 帮忙看个错,数据库连接问题 看看这个xml怎么用xsl解析 在DELPHI中,怎么遍历相同的控件? 一个简单的问题---在线等 在线等待:如何捕捉listctrl垂直滚动条的点击事件? 控件分类管理 急求一个递归统计函数,能解决者马上给分!!! 如何在ie中只打印iframe里面的页面内容 求select语句 请jennifergiant来领分,谢谢 如何将在内存中创建的BMP文件加载到页面上??? 帮忙看个错,ORA-00600 那里可以下载测试工具(Loadrunner,testdirector) 如何写一个往数据库里插入记录的公共模块啊? 文本两边对齐 请问sqlserver2000中bit类型值怎样表示 谁有jspsmart 上传组件。我上不了jspsmart.com ,好心人给我发一个!!! 时间格式有误,不知是何原因? 怎样开、关进程!(不是线程)? 今年高考的一篇旷世奇文 cnn连接怎么单独写出来,让Sub或Function调用?不用每次都写一次连接, 请附上Code ,谢谢 请教multibytetowidechar的用法 请救各位. 关于用nmudp实现传输!up也有分,:)) jcreator的debug模式不是很好用,怎么(黄色小三角)指的位置不对啊? 关于用mscomm编程的问题,请大虾指教 导出数据库和操作时经常出现无法分配共享内存错误. 关于ListBox 重分请教:关于制作自定义报表的问题!!! 请问怎样编程查询一个字符串的五笔字型编码? 我们单位要上ERP,作为公司分管微机这一块的我该准备些什么? 右键菜单问题 d7+ADO+SQL2000,如何判断SQL2000数据库中存在某个表? 见异思迁,土堆难翻;专心致志,高峰能攀 见异思迁,土堆难翻,专心致志,能攀高峰.意思? 山重水复·柳暗花明一样的词语 像山重水复,柳暗花明这样的词语 TRADITIONAL TOYS怎么样 鬼域结局什么意思 出现了两个自己,之后怎么了?看不懂.李心洁主演的《鬼域》 山重水复、柳 暗花明类似的词有什么? My toys写一篇英文小作文,词数木少于40 六岁的小孩有没有过思维能力培养的黄金阶段?杭州有早教机构可以培养思维能力的吗? 孩子已经6岁了,有没有过培养独立的思维能力的黄金阶段啊? 近日海外关键词(10月23日):老子乌兹别克斯坦艺术时尚周开幕德国现任政府正式卸任 “黑黄联盟”终韩国人战殁者遗属要求靖国神社取消合祀调查称希腊民众生活质量比经济危机前显以情报部长质疑伊朗谈判诚意 吁美制裁2047年:全球高温临界点?挪威称应联合国要求将协助销毁叙利亚化美专家:进口产品及食品易导致美国儿童俄空降兵部队摸黑赶路不慎引爆炸弹 致日本“无性症候群”涌现 恐陷“绝种”电游室老板竟用冰毒“待客”获刑6个月长沙万家丽路快速化改造 4月8日全面芙蓉路拟变身成“最美林荫大道”长沙万家丽路快速化改造下月开工 总工赖亚文接任女排领队 曾辅佐胡进陈忠和陈求发:做到对大气污染战之能胜壮大龙头企业 让住宅产业“走出去”长沙62家停车场 违规挪用被查新疆政协机关召开干部大会确保\"两会冯晓仙、李哲、王鹏任平顶山市副市长(男子酒后失手打死13岁女儿
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘