⚠️阅读前必看
- 本文所有代码、架构设计均为个人原创实现,AI辅助部分均已人工审查重构
- 演示素材使用CC0开源资源/原创占位图,未包含任何任天堂官方资源
- 文中“宝可梦风格”仅指代像素RPG品类,不涉及具体IP还原,与任天堂官方无任何关联
- 因版权合规要求,本文以文字+代码为主,避免展示可能引发争议的图片素材
初始城镇
上篇已经讲过地图编辑器(Tiled)的使用方式,这个就不在赘述了,使用工具创建一个地图文件,并把在网上找到的贴图纹理导入进来,就可以把他拉到地图上了,然后按照上篇建object层的方式建立一个障碍物层,框选是障碍物的部分,并设置属性,之后就可以保存xml了。
打开保存的xml文件,会发现多了下图的csv字串
这个就是上篇说的纹理id,代码就是通过这个id找到纹理,并显示的。
随后就可以在代码中显示地图,在角色移动后判断坐标是否是障碍物(AABB算法检测粗陋,不是很准),代码修改如下
现在你就能重新编译并启动你的项目啦,能发现主角在你画的地图中“畅游”啦,并在碰到障碍物的时候停下。
博士研究所
接下来就要进入博士研究所获取属于自己的宝可梦啦!!!
在初始城镇地图上添加一个新的object层(比如叫points),在研究所门口位置添加一个点位,并创建属性(这一步可以根据自己的想法随意更改),以下是我的做法
代表这是一个入口点,nextMap是指向切换显示的地图,以及切换后人物的初始坐标。
绘制博士研究所地图,并按添加object层的方法添加障碍物层,npc层(如博士,研究员),item层(如精灵球),通过代码加载纹理,绑定精灵的方法把博士,精灵球这些显示在界面上(这里也可以上述设置属性的方法来实现;研究员比较复杂,他是可以按照规定路线走动的,所以这里先创建一个静态npc占位,动态的以后在考虑)。
上述有入口点,这里当然要有一个出口点啦,一样设置
随后在加载地图的类中,可以保存这些属性,在人物移动后障碍物检测的api中可以判断当前点位是否和属性点位相同,如果相同就切换地图,代码如下
⚠️文中涉及到的坐标,可以在代码中cout打印当前人物坐标来确定,也可以通过在地图文件中添加点位后,查看文件来确定其坐标(这种方式有可能有偏移)
⚠️为了游戏有更好的体验感,这里切换地图时引入了两秒的黑屏(关于黑屏的制作方法,可以用定时器实现,这里不再赘述)
现在初始城镇和博士研究所的来回切换就可以丝滑进行了,关于博士研究所内发生的事(跟博士对话->选择精灵球->和研究员对话)的开发,以及获取宝可梦后再背包中查看(背包-精灵系统的开发)将在下一篇详细说明。
未完待续。。。
📌以上内容基于开发过程中的真实问题与解决方案整理。受限于个人技术水平,难免存在疏漏或更优解法,欢迎在评论区指正交流!