自我介绍:本人网名国子祭酒,若有同名纯属偶然,本人喜欢历史,原姓谢,谢氏历史上淝水之战成名的谢安是我祖上,谢安父亲谢衡 曾经担任 国子博士,国子祭酒、太子少傅、散骑常侍。对国子祭酒一名称深觉有意,遂取网名国子祭酒。
技术介绍:一名外行C++开发人员,(硬件测试和设备相关,主要Windows / Mac 搭建一些带UI的程序,C++ 4+年,Python4+年经验,Javascript 1+年经验 , Object-c 2+年经验)
制作动机:本人特别喜欢横板类的游戏,比如FC游戏热血系列、Nintendo 掌机上的一些精彩的横板都是我热爱的游戏,但是实实在在的没有找到一款我个人想象中的横板闯关类型的游戏,我决定动用我的资源自己做一个,在此之前Cocos2dx 被我选中,因为free,和C++都是我熟悉的东西,本文只为做游戏,不在代码优势性能优势上提供任何内容。
继昨天完成的部分分析,今天本着以添加地图的意图,发现了Tiled Map Editor 这样一个神奇的工具,使用这个工具的时候我一度以为只是类似PS这样的工具,经过一番折腾,得出这玩意可以做的事情还是很多的,本Part 主要以工具的作用和意义分析 顺带引入如何在代码中使用这个工具制作出来的xxx.tmx文件
一、关于Tiled Map Editor 工具(自行到官网下载),它是什么?用来做什么,为什么要用它?
分享一个今天在学习中找到的一个非常好的博客:https://blog.51cto.com/shahdza/1613527 感谢每一位努力的人,分享就是价值,这篇文章详细解释的很清楚,我在这里只做一个概述,它是什么,用来做什么。
1、制作一些图层(简单的说,比如背景你可以利用这个工具去画,可以制作地形 --这是我今天主要折腾的方向,最终我仍然不知道做好了之后如何让它在游戏中发挥作用,这个问题我留作后续收尾)
2、存储一些信息 (可以在对象层中添加一些对象信息) 我以为代码的东西,其实你首先要理解它给提供什么,然后你用它可以得到什么,类似这样的更由一点点抽到低,代码就不难。
这里主要说一下它在做游戏的主要作用: 绘制地图/地形 / 编辑敌方 或者 我方英雄位置,然后保存成一个 xxx.tmx的文件 ,cocos2dx 使用TMXTiledMap 这个Class来解析这个文件,将可以直接使用这个类完背景图 的显示,利用里面存储的位置信息去new 一些精灵之类的,顺便tiled map把图片做成了一块一块的,每一块都可以通过tile 坐标获取到对象,并且完成一些控制,比如变化大小,于是我觉得可以初步把它当作一个游戏项目的”加强版的json 文件制作工具“
二、得到了工具制作而成的 xxx.tmx文件,Cocos 中可以如何使用呢 ?
Cocos2dx 提供了一个叫做 TMXTiledMap 的类,可以获取 图层&对象,TMXLayer&TMXObjectGroup
TMXTiledMap 调用getLayer 获得 TMXLayer
TMXTiledMap 调用getObjectGroup 获得 获得Object 实际上是ValueMap ,可以通过key 访问 “x”/"y" 获取坐标。这个坐标目前还有一个疑点没有解决,y轴的值差一点点,x完全吻合,很奇怪,解决后再修改
然后本人在明白了它的具体使用后,生成了3个enemy.和一张背景图,取消了HelloWorld 的图标。如下就是今天的成果,界面使用的tiled map是工具提供的demo中做了小小的修改而来的。
三、坐标系问题,坐标系应该是游戏开发里面的重头戏,这次我们使用到了tiled map,比较重要的一些点如下
1、tile 都是左下作为锚点 水平向右是X ,垂直向上是Y(这些在上面贴出的博客里面有写,请移步到那边学习)
2、实际上Tiled Map 的 Tile 坐标 是左上是(0,0){(x,y)},分别水平向右 X递增 ,垂直向下 Y递增
3、Cocos2dx 使用的openGl 坐标原点是左下 为原点,水平向右是X ,垂直向上是Y ,今天制作的三个enemy 的y 轴坐标就是不对的,暂时不清楚原因。
下一Part ,开始添加主角精灵,带动画的那种。
共有条评论 网友评论