我的编程空间,编程开发者的网络收藏夹
学习永远不晚

如何使用Direct3D设计体育类游戏

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

如何使用Direct3D设计体育类游戏

    Direct3D是基于微软的通用对象模式COM(CommonObjectMode)的3D图形API。它是由微软(Microsoft)一手树立的3DAPI规范,微软公司拥有该库版权,它所有的语法定义包含在微软提供的程序开发组件的帮助文件、源代码中。Direct3D是微软公司DirectXSDK集成开发包中的重要部分,适合多媒体、娱乐、即时3d动画等广泛和实用的3D图形计算。自1996年发布以来,Direct3D以其良好的硬件兼容性和友好的编程方式很快得到了广泛的认可,现在几乎所有的具有3D图形加速的主流显示卡都对Direct3D提供良好的支持。

     介绍完Direct3D,下面我们就通过展示一个小游戏的编写程序,教会大家如何使用Direct3D。

如何使用Direct3D设计体育类游戏_体育游戏_Direct3D_游戏设计教程_编程学习网

  之前我在一些群里提问了,提问的内容是怎样设计一个角色的运动系统,它可以实现二段跳,可以以单倍速度运动,也可以以双倍速度运动,也没有高手能够帮助我,所以自己还是自力更生吧,自己制作角色的运动系统。

  角色的运动系统说起来很简单,其实还要考虑很多的问题。在设计的时候一方面要考虑效率的问题,另一方面要考虑设计能够简单明了,以后自己维护甚至别人维护不至于迷惑。我以前也完成了一个类似的系统,使用lua编写的,现在转向了C++,效率的瓶颈就没有那么严重了,而且我另外开了个线程,专门负责所有地图块单元的运动,不过我还是小心谨慎的一遍又一遍的设计,希望能够达到更好的效果。

  对于用同样困惑的同学,我也只能点到为止,因为大家遇到的情况都不相同,我也不好具体地分析每一种情况。

  首先假设有两个函数KeyDown()和KeyUp(),它们表示按键按下和弹起。CPlayerUnit表示玩家(角色)所在的单元的类。那么实现左、右的移动可以这样分析:

  这里说一下,为什么将碰撞检测放在前面呢?以前我的做法是将边界检测放在前面的,但是后面我想了想,碰撞检测失败的几率比边界检测要大得多(地图上的砖块比较多),由于&&短路的性质,当检测到碰撞也就不会执行边界检测了。所以这样做平均时间复杂度分析要划算一些。

  这样简单的左右移动就完成了,接下来要完成的是双倍速的左右移动的检测。

  不知道大家以前玩过《忍者猫》没有?对了《激龟快打》也是,这些游戏的操作是这样的,如果玩家在很短的时间内按下了两次左键或者是右键,那么角色会以两倍速运动,角色动画也会不一样。按照这样的行为我们来想想究竟该如何实现它。

  其实可以这么想,调用系统函数获取时间,当第一次按下左、右键时,记录下此时的时间,松手后第二次按下按下左、右键时,通过当前时间与第一次时间的比较,如果超过了规定的数值(比如说500毫秒),那么还是原来的速度,如果没有超过该数值,那么可以以双倍速运动。增加的语句如下所示:

  这里注意的是,由于按键的响应是实时调用的,要使用一个锁进行锁住,即第一次记录时间,以后相同的行为不要记录时间。

  接下来介绍一下跳跃功能的实现。弹跳和下落是相对的,不同的是,弹跳仅当按下了按键时才会触发,而在弹跳触发的过程中,下落不会被触发,不过其余的情况下它总是会被触发。那么首先来实现一个小小的跳跃功能吧。

  这里也用到了锁的概念。由于这些操作都是实时的,所以锁的存在可以避免一些数值被重复运算。

  就这样完成了一个简单的一段跳运算,要实现二段跳,还要再添加一些代码才行。首先想想,如果角色要支持二段跳,那么必须设立一个名为jumpTime的变量,记录了跳跃的次数。其次,在第一次按下C键时,jumpTime要减一,其中要使用锁来避免减得过多。第二次按下C键时,jumpTime继续减一,直到减到0,此时按下C键没有任何反应,直接进入Fall()过程。下面的伪代码可以帮助理解其过程。

  

  在这里※部分,描述了一种情况:当玩家没有跳跃而落下的时候,在空中可否允许跳跃呢?答案是否定的。我在很多的游戏中看到不允许跳跃的情况,那么一个简单的判定方法是如果落下的时候jumpTime为2(即没有启动过跳跃程序),JumpTime应该为0,这样就避免了一个逻辑上的Bug。

  我现在在实验的这个程序是仿照几年前Lizsoft的FortuneSummoners游戏进行制作的。该游戏制作精美,动感十足,看得出游戏公司几年的锤炼是富有成效的。一下是该游戏的截图:

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

如何使用Direct3D设计体育类游戏

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

如何使用Direct3D设计体育类游戏

编程学习网:Direct3D是基于微软的通用对象模式COM(CommonObjectMode)的3D图形API。 下面我们就通过展示一个小游戏的编写程序,教会大家如何使用Direct3D。
如何使用Direct3D设计体育类游戏

游戏开发中的UI/UX设计技巧与原则(如何运用UI/UX设计提升游戏用户体验?)

本指南探讨了游戏开发中UI/UX设计的技巧和原则,旨在提升玩家体验。重点包括以玩家为中心、清晰导航、可发现性、响应反馈、简洁和直观、功能优先、美学原则、色彩心理、艺术风格、动画、微互动、视觉层次、清晰字体、本地化、文本风格、动态文本、用户测试、迭代优化、数据跟踪、社区参与和持续改进。
游戏开发中的UI/UX设计技巧与原则(如何运用UI/UX设计提升游戏用户体验?)

游戏开发中UI动效设计与交互体验优化(如何通过UI动效提升游戏交互体验?)

游戏开发中的UI动效设计和交互体验优化通过利用动效提供明确指示和增强反馈,营造沉浸感和氛围,优化交互流程,提升用户参与度,并考虑性能和可访问性。设计流程包括确定目标、制作原型和迭代优化。开发者可以使用动效引擎、外部软件和脚本编程等工具和技术打造流畅、吸引人的游戏体验。
游戏开发中UI动效设计与交互体验优化(如何通过UI动效提升游戏交互体验?)

编程热搜

  • 教你如何为你的Cocos2D-X资源加密解密
    编程学习网:我们平时在用Cocos2D-X时都不想让别人看到自己的文件,本篇教程将教你如何为你的Cocos2D-X资源加密解密。
    教你如何为你的Cocos2D-X资源加密解密
  • 教你如何用Cocos2D实现3d效果
    编程学习网:经过了之前几篇教程,相信各位同学已经对Cocos2D不陌生了,本篇教程将教你如何用Cocos2D实现3d效果。
    教你如何用Cocos2D实现3d效果
  • 零基础学习之教你如何用Cocos2D实现画中画效果
    编程学习网:没学过Cocos2D?没关系,多看看我们的教程,一步步成为游戏开发大神。本篇教程将教你如何用Cocos2D实现画中画效果。
    零基础学习之教你如何用Cocos2D实现画中画效果
  • 解析安卓Cocos2D-X2转移项目到Cocos2D-X3过程
    编程学习网:相信有一部分同学都经历过将项目从Cocos2D-X2转到Cocos2D-X3的麻烦,本篇教程将解析将项目从Cocos2D-X2转到Cocos2D-X3的过程。
    解析安卓Cocos2D-X2转移项目到Cocos2D-X3过程
  • 游戏脚本设计基础教程
    编程学习网:类游戏编程,特别是RPG脚本起着驱动整个游戏进程的作用。事件的运作建立在脚本的基础上,而脚本的设计建立在引擎的基础上,所以设计脚本之前因该想一想引擎,好的脚本对剧情的描述具有简单、准确的性质。
    游戏脚本设计基础教程
  • 成为游戏设计师必须具备的条件
    编程学习网:很多人喜欢玩游戏,他们总在不停感叹:这款游戏实在太精彩了,我要是能设计出这样的游戏就!而在他们行动之前,还有许多需要解答的问题罗列在前,我要如何成为游戏设计师?我需要具备哪些技能和素质?游戏设计师究竟在做什么工作?那么,游戏设计师有哪些任务呢?我们将讨论这个问题。
    成为游戏设计师必须具备的条件
  • 贪食蛇小游戏开发设计基础教程
    编程学习网: 贪吃蛇是家喻户晓的益智类小游戏,大家小时候应该都有玩过,编程学习网这里就不多介绍了,本教程将教你用MicrosoftVisualC++来制作它。
    贪食蛇小游戏开发设计基础教程
  • 成为优秀的Cocos2D程序员需要的十个品质
    编程学习网:相信各位同学都在为了成为优秀的Cocos2D程序员而奋斗着,那么一个优秀的Cocos2D程序员需要具备什么品质呢?本篇教程为你揭秘成为一个优秀的Cocos2D程序员所需要的十个品质。
    成为优秀的Cocos2D程序员需要的十个品质
  • Unity3d脚本基础
    最好用游戏引擎开发游戏,推荐Unity3D引擎,该引擎学习更简单,更易上手。游戏引擎可以编辑你的游戏场景、角色和游戏需要的东西。还有,学习编写脚本。编写脚本实际上就是编程。例如,你要在游戏中按键盘方向键来控制角色行走,这必须通过编写脚本。因此,脚本是游戏的逻辑。小编推荐你去学C编程,Unity3D通常是用C语言编写的。
    Unity3d脚本基础
  • 实例教程解析制作flash小游戏
    编程学习网:flash小游戏在游戏开发中是属于比较简单的类型,本例为FlashAS3.0实例教程,介绍射击类游戏的制作,主要分游戏界面的制作和类的编写两部分,从简单的开始做起,跟着教程动手做做看吧。
    实例教程解析制作flash小游戏

目录