- 1、本文档共17页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
创建一个等角投影的Tile贴图引擎
?????
创建一个等角投影的Tile贴图引擎
By Michael Dundee
当我开始编程的时候为的就是开发游戏。但一段时间以后我放弃了,因为用DELPHI做开发实在找不到合适的游戏API来支持。我曾考虑改用C/C++,因为它们有那么多的API支持,例如DirectX和OpenGL。但是对我来说使用那么多API来开发C/C++程序实在我人恐惧。
后来我碰巧遇见 DelphiX。它把API封装的简单易用,相当迅速、强大。我非常喜欢它并使用至今,现在我愿意和大家一起分享。
这里并不介绍如何安装DelphiX ,也不会介绍DirectX,因为这会占用太多的文章篇幅。感兴趣想了解这方面知识的人,我推荐你们看看Dominique Louis的文章以及其它Borland 开发社区的文章(1, 2, 3)。
这篇系列教程的基本目标是创建一个基本的游戏引擎。将包括这些主题:建立一个等尺寸的贴图引擎;活动单元和贴图;路径寻找、基本的游戏AI、碰撞检测。
这一章将创建一个基本的等角投影贴图引擎,用来从磁盘读取地图。与此相关的编辑器可以从这里下载downloaded here。
开始
首先预览一下下面文章中会遇到的特殊词汇。
TILE:一个具有规则形状的小图片。一个tile不能表现什么,但是大量的tile可以组成某些东西。一般用来生成游戏中的地形。Tile可以有不同的形状。最常用的有菱形、方形和六边性,由于这是一个等投影tile引擎,所以我们使用菱形tile。
TILING ENGINE. 将tile绘制到各自位置的有序代码(一般是过程或者部分过程)。它也要决定拿一个渲染帧被显示。
TILING:设置所有tile到正确位置的过程。也就是tiling 引擎要做的事。
制作一个等投影的地形
这个技巧制作一个等投影的环境,将所有的tile的边相连。此例使用菱形的tile。如果我们简单的将它们一行一行的边边相连放置在一起效果如下所示:
正如你所见,我们创建的只能叫西洋跳棋。图片的透明部分形成巨大的漏洞。边缘没有很好的相连,为什么?这就是我些这篇文章要解决的。
通常的方法是将第一行画好,下一行的起始不是在32象素(tile的高度)而是16象素。 也要向左侧偏移32个象素开始。然后每个新行都向上移动16个象素并左移(右移)32个象素。
但这不是全部,你玩Age of empires或AoE2 时一定注意到地图的边缘不是锯齿型,这个地图的形状是菱形。解决的方法是第一行只画一个tile,然后画2个、3个等等, 到某一个点为止。然后开始逐行减少直到为零。这时候你不需要左右来回切换偏移方向,只要在增加的时候向左偏移,减少的时候向右偏移即可。如果做一个3x3 的tile地图看上去如下:
你想为地图增加草和水吗?如果你想知道答案就看这里。如果在地图中增加变化(策略游戏) ,我们就不得不从某些地方将地图加载进来。一个2维的整型数组可以解决这个问题。. 在数组中检测当前的tile是否绘制。可以使用多张地图,在运行期不要重定义。我们将它们存储为文件。在代码中你会看到这是一件简单的事。这篇文章有一个地图编辑器,这是一个非常简单的地图编辑期,用来保持地形数组。你必须下载它并自行编译才能使用。
理论听烦了,下面看看实践吧!
建立一个TILING 引擎
首先,建立一个文件夹用来存放所有的图片和地图文件,以防丢失。
第二步下载图片here。如果你选择使用自己的图片,记住图片一定要是64 pixels宽32 pixels高。
然后下载编辑器,确定安装了DelphiX 后编译编辑器。喝点东西,找张舒适的沙发,我们开始吧。
建立一个新的Delphi应用程序。把它保持到图片的目录中。命名为uGame.pas 和 Game.dpr。
首先建立一个窗体,将窗体申明的类从TForm 改为TDXForm。在对象查看器中设置如下属性。
BorderStyle: bsNone Caption: Whatever you want Name: MainForm 现在需要一个绘画用的surface。选择TDXDraw 组件,将它拖放在窗口上并设置如下:
Align alClient Display 640x480x8 Name DXDraw Options doFullScreen True doAllowReboot True doFullScreen True 下面拖放一个TDXImageList组件用来放置图片,并设置如下:
DXDraw DXDraw Name TileMaps 增加图片的Items属性, (You will figure out how, its self-explanatory.) ,添加有4个图片,编号0-3。
然后我们需要一个Timer告诉计算机
您可能关注的文档
最近下载
- 教学课件 园林苗木生产与经营.ppt
- 数字万用表-(34450A)-用户指南.pdf VIP
- 电路基础:三相电源的产生.pptx VIP
- GB50797-2012 光伏发电站设计规范.pdf VIP
- 煤矿避难硐室使用方法及注意事项.pptx VIP
- 项目进度计划的作用.docx VIP
- 四川省成都市新都区新都一中学实验学校2024−2025学年上学期新七年级分班(奖学金)模拟 数学提高试题(含解析).docx VIP
- 纪检监察审查调查工作实务.pptx VIP
- 拆除旧设备施工工艺.docx VIP
- 2025福建福州首邑产业投资集团有限公司(第一次)招聘18人笔试参考题库附答案解析.docx VIP
文档评论(0)