微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

cocos2dx使用TiledMap模拟3D地图场景----斜45度2D地图的靠墙直线移动

基于cocos2dx引擎的第三人称射击游戏,角色使用3D模型,地图采用2.5D。
定制地图编辑系统抛开不谈,这里最大可能的挖掘现有工具TiledMap的潜力,完成超2.5D地图的实现。

使用2D地图高度模拟3D场景,主要有两个要点需要解决
1.地图和角色的层级问题,类似3D场景的深度。 在某些障碍物附近,角色可以被障碍物遮挡,也可以遮挡住障碍物。
2.斜45度2D地图边缘的平滑移动。 从图中可以看出组成地图的格子造成了地图的锯齿状边缘,从而导致角色在靠近墙体的容易卡住或者阶梯式移动。
3.(可选)地图的场景道具编辑和事件编辑也在下图中。


问题1方案:
2D游戏层级问题必须由分层并且是分图层来解决。地图本身分为两层,底板(设计图)和上层障碍物地图,这两张地图一般大。上层地图用于角色的遮挡和被遮挡。
角色也需要两个层级。 一个层级可以被上层地图遮挡,另一个层级可以遮挡上层地图。
最终这四层如下:
1.Map Bottom (距离屏幕最远)下层地图
2.Role Bottom 被遮挡的角色层
3.Map Top 上层地图
4.Role Top (距离屏幕最近) 遮挡一切地图

角色根绝所在的位置(这里有TiledMap砖块配置获取),可以及时切换所在的层级(2或者4),按照这四层的绘制顺序完成2.5D地图。
由于3D模型使用了单独的摄像机,所以这四层在场景中转变为四个摄像机。分别为对应为USER1,USER2,USER3,USER4。

问题2方案:
对于游戏场景移动的体验非常重要,特别是靠近边缘移动,在我个人的理解中有两点很重要,一是不要停,二是平滑。
1.不要停
在锯齿状的地图中,如果没有任何优化,必须要随时使用遥感调整移动方向。
这里的优化参考最简单的直线墙体移动。在平行于x轴遇到障碍物的情况下,则按照遥感方向选择合适的Y轴方向模糊移动。
2.锯齿边缘的平滑移动。
在TiledMap引入了直线的概念,从图中看到部分墙体划了直线。使用RTREE算法高效查找人物所在的直线,在边缘检测到可直线移动的时候,沿着直线平滑移动,不会走锯齿状的路线出来。


原文地址:https://www.jb51.cc/cocos2dx/338918.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐