cocos2dx如何加载超大型地图

时间:2021-01-18 19:43:05
         像素是 10000 * 10000 png图片,如何加载到cocos2dx场景中有几个问题:


    1.使不适用瓦片地图编辑器呢?它可以很方便的设置地图的障碍,但是使用它感觉分割地图不方便;
    2.图片肯定是要分割的,分割方法我google了下知道了卡马克卷轴法,可是我不会实现,哪位能提供一些思路或给个例子项目让我参考下;
    3.如果不使用瓦片地图,该怎么设置地图的障碍呢?(若使用,无视该问)

27 个解决方案

#1


用TiledMap的话,Cocos2d-x似乎只能整张加载(也可能是我没发现它有动态加载的功能)

所以你应该要自己实现了~一边移动地图,一边加载即将出现的图块,然后释放已经离开屏幕比较远的图块
至于卡马克只是优化嘛,不一定分割了就要用它~ cocos2dx如何加载超大型地图

TiledMap可以导出Json格式,里面的数据全都有,你可以自己写一个解析和动态加载释放的类,这样就可以用TiledMap编辑你的地图(包括障碍层),障碍物检测什么的就很好实现了~

#2


引用 1 楼 musicvs 的回复:
用TiledMap的话,Cocos2d-x似乎只能整张加载(也可能是我没发现它有动态加载的功能)

所以你应该要自己实现了~一边移动地图,一边加载即将出现的图块,然后释放已经离开屏幕比较远的图块
至于卡马克只是优化嘛,不一定分割了就要用它~ cocos2dx如何加载超大型地图

TiledMap可以导出Json格式,里面的数据全都有,你可以自己写一个解析和动态加载释放的类,这样就可以用TiledMap编辑你的地图(包括障碍层),障碍物检测什么的就很好实现了~


引用 1 楼 musicvs 的回复:
用TiledMap的话,Cocos2d-x似乎只能整张加载(也可能是我没发现它有动态加载的功能)

所以你应该要自己实现了~一边移动地图,一边加载即将出现的图块,然后释放已经离开屏幕比较远的图块
至于卡马克只是优化嘛,不一定分割了就要用它~ cocos2dx如何加载超大型地图

TiledMap可以导出Json格式,里面的数据全都有,你可以自己写一个解析和动态加载释放的类,这样就可以用TiledMap编辑你的地图(包括障碍层),障碍物检测什么的就很好实现了~
哎,还得自己写类,郁闷~

#3


为什么要用到这么大的背景图?

#4


我做过一个无限循环的大背景图,只用了一张图片1280*800的图片,里面创建了4个实例对象。在玩家上下左右移动的时候,调整四张图的位置关系,就无限了。为啥要用10000*10000的。。。

#5


加载这么大的一张图,GPU吃得消么。。。

#6


10000乘以10000的图片,是不是世界大地图啊。看你制作哪种类型的游戏了。如果是RPG的话,那么要用瓦片图。做碰撞检测什么的也很方便。

#7


引用 5 楼 qqYang123456789 的回复:
加载这么大的一张图,GPU吃得消么。。。
地图就做成了这么大块。。。

#8


引用 6 楼 jiangcaiyang123 的回复:
10000乘以10000的图片,是不是世界大地图啊。看你制作哪种类型的游戏了。如果是RPG的话,那么要用瓦片图。做碰撞检测什么的也很方便。
可是瓦片地图不能处理PNG格式啊

#9


引用 8 楼 anhanjinj1 的回复:
Quote: 引用 6 楼 jiangcaiyang123 的回复:

10000乘以10000的图片,是不是世界大地图啊。看你制作哪种类型的游戏了。如果是RPG的话,那么要用瓦片图。做碰撞检测什么的也很方便。
可是瓦片地图不能处理PNG格式啊

瓦片地图是一种游戏的地图类型,png什么的cocos2d-x有支持libpng的。你需要做的是废弃你的大地图,然后使用Tiled制作一个地图场景,然后再导入游戏引擎中。这是目前非常流行的做法。

#10


cocos2dx-x有异步加载图片的接口,可以先调用这个,然后再生成地图,会从缓存中读取图片的

#11


引用 9 楼 jiangcaiyang123 的回复:
Quote: 引用 8 楼 anhanjinj1 的回复:

Quote: 引用 6 楼 jiangcaiyang123 的回复:

10000乘以10000的图片,是不是世界大地图啊。看你制作哪种类型的游戏了。如果是RPG的话,那么要用瓦片图。做碰撞检测什么的也很方便。
可是瓦片地图不能处理PNG格式啊

瓦片地图是一种游戏的地图类型,png什么的cocos2d-x有支持libpng的。你需要做的是废弃你的大地图,然后使用Tiled制作一个地图场景,然后再导入游戏引擎中。这是目前非常流行的做法。
你的意思是将大地图分成几个不同的场景?  我看别人的工程是吧大地图分割成很多个小块地图,然后动态载入这些小块拼成一幅图来显示。    

#12


引用 10 楼 tx183584 的回复:
cocos2dx-x有异步加载图片的接口,可以先调用这个,然后再生成地图,会从缓存中读取图片的
你的头像我也用过,仙剑4吧嘿嘿;

请问这个接口函数是属于哪个类的,我去瞅瞅。

#13


引用 11 楼 anhanjinj1 的回复:
Quote: 引用 9 楼 jiangcaiyang123 的回复:

Quote: 引用 8 楼 anhanjinj1 的回复:

Quote: 引用 6 楼 jiangcaiyang123 的回复:

10000乘以10000的图片,是不是世界大地图啊。看你制作哪种类型的游戏了。如果是RPG的话,那么要用瓦片图。做碰撞检测什么的也很方便。
可是瓦片地图不能处理PNG格式啊

瓦片地图是一种游戏的地图类型,png什么的cocos2d-x有支持libpng的。你需要做的是废弃你的大地图,然后使用Tiled制作一个地图场景,然后再导入游戏引擎中。这是目前非常流行的做法。
你的意思是将大地图分成几个不同的场景?  我看别人的工程是吧大地图分割成很多个小块地图,然后动态载入这些小块拼成一幅图来显示。    

既然你那个是地图,就用tile-based game开发方法进行开发吧。如果你想把图片作为横板过关游戏的背景,那么采用一定的算法进行背景的运动。

#14


引用 13 楼 jiangcaiyang123 的回复:
Quote: 引用 11 楼 anhanjinj1 的回复:

Quote: 引用 9 楼 jiangcaiyang123 的回复:

Quote: 引用 8 楼 anhanjinj1 的回复:

Quote: 引用 6 楼 jiangcaiyang123 的回复:

10000乘以10000的图片,是不是世界大地图啊。看你制作哪种类型的游戏了。如果是RPG的话,那么要用瓦片图。做碰撞检测什么的也很方便。
可是瓦片地图不能处理PNG格式啊

瓦片地图是一种游戏的地图类型,png什么的cocos2d-x有支持libpng的。你需要做的是废弃你的大地图,然后使用Tiled制作一个地图场景,然后再导入游戏引擎中。这是目前非常流行的做法。
你的意思是将大地图分成几个不同的场景?  我看别人的工程是吧大地图分割成很多个小块地图,然后动态载入这些小块拼成一幅图来显示。    

既然你那个是地图,就用tile-based game开发方法进行开发吧。如果你想把图片作为横板过关游戏的背景,那么采用一定的算法进行背景的运动。
不用啦,我找到了一个手机游戏的开源库,它有响应处理地图的方法,直接用它的吧~

#15


引用 14 楼 anhanjinj1 的回复:
Quote: 引用 13 楼 jiangcaiyang123 的回复:

Quote: 引用 11 楼 anhanjinj1 的回复:

Quote: 引用 9 楼 jiangcaiyang123 的回复:

Quote: 引用 8 楼 anhanjinj1 的回复:

Quote: 引用 6 楼 jiangcaiyang123 的回复:

10000乘以10000的图片,是不是世界大地图啊。看你制作哪种类型的游戏了。如果是RPG的话,那么要用瓦片图。做碰撞检测什么的也很方便。
可是瓦片地图不能处理PNG格式啊

瓦片地图是一种游戏的地图类型,png什么的cocos2d-x有支持libpng的。你需要做的是废弃你的大地图,然后使用Tiled制作一个地图场景,然后再导入游戏引擎中。这是目前非常流行的做法。
你的意思是将大地图分成几个不同的场景?  我看别人的工程是吧大地图分割成很多个小块地图,然后动态载入这些小块拼成一幅图来显示。    

既然你那个是地图,就用tile-based game开发方法进行开发吧。如果你想把图片作为横板过关游戏的背景,那么采用一定的算法进行背景的运动。
不用啦,我找到了一个手机游戏的开源库,它有响应处理地图的方法,直接用它的吧~


我的游戏不是横版,是类似于网页游戏那种ARPG

#16


你好,我最近也遇到了你这样的问题,也需要加载一块大型的世界地图,想请教一下你最后是怎么实现的,能加一下Q吗?我的Q是  1608412487

#17


同求 1277097685

#18


引用 16 楼 yanpengjeff 的回复:
你好,我最近也遇到了你这样的问题,也需要加载一块大型的世界地图,想请教一下你最后是怎么实现的,能加一下Q吗?我的Q是  1608412487

最后是,没有解决直接放弃了这种不现实的设想,如果你真的是工作需求,我推荐你去九秒社区找一找他们做的一些开源游戏项目,里面的地图加载他们有个库,不过也开源了,去看看吧,(注:他们那个手游的复杂度完全是页游级别的,看起来很纠结。)

#19


引用 17 楼 teng111teng 的回复:
同求 1277097685
同上,去找找看吧。

#20


同求啊380590023

#21


最好的办法是做一个大的空白panel 然后将你的大图分割成小的无缝连接 一个一个添加 这样资源不会很大 绘制效率也还行。

#22


我也开始要面对这问题,到底是用TIELD处理,还是怎么去处理,那楼主最后是参考9秒社区那个项目?

#23


引用 22 楼 yxlovemoney 的回复:
我也开始要面对这问题,到底是用TIELD处理,还是怎么去处理,那楼主最后是参考9秒社区那个项目?
是的就是九秒的那个项目,不过现在我已经转到U3D了。。。

#24


引用 21 楼 y541028105 的回复:
最好的办法是做一个大的空白panel 然后将你的大图分割成小的无缝连接 一个一个添加 这样资源不会很大 绘制效率也还行。
思路是将大地图分割成有序列的小块地图,然后动态载入这些地图,不在视野里的卸载掉。。不过得自己去写操作。。。

#25


<a href="http://www.baidu.com"><img src="https://img-bbs.csdn.net/upload/201508/03/1438569016_872424.gif"></a>

#26


该回复于2015-08-03 10:39:42被管理员删除

#27


该回复于2015-08-11 08:31:00被管理员删除

#1


用TiledMap的话,Cocos2d-x似乎只能整张加载(也可能是我没发现它有动态加载的功能)

所以你应该要自己实现了~一边移动地图,一边加载即将出现的图块,然后释放已经离开屏幕比较远的图块
至于卡马克只是优化嘛,不一定分割了就要用它~ cocos2dx如何加载超大型地图

TiledMap可以导出Json格式,里面的数据全都有,你可以自己写一个解析和动态加载释放的类,这样就可以用TiledMap编辑你的地图(包括障碍层),障碍物检测什么的就很好实现了~

#2


引用 1 楼 musicvs 的回复:
用TiledMap的话,Cocos2d-x似乎只能整张加载(也可能是我没发现它有动态加载的功能)

所以你应该要自己实现了~一边移动地图,一边加载即将出现的图块,然后释放已经离开屏幕比较远的图块
至于卡马克只是优化嘛,不一定分割了就要用它~ cocos2dx如何加载超大型地图

TiledMap可以导出Json格式,里面的数据全都有,你可以自己写一个解析和动态加载释放的类,这样就可以用TiledMap编辑你的地图(包括障碍层),障碍物检测什么的就很好实现了~


引用 1 楼 musicvs 的回复:
用TiledMap的话,Cocos2d-x似乎只能整张加载(也可能是我没发现它有动态加载的功能)

所以你应该要自己实现了~一边移动地图,一边加载即将出现的图块,然后释放已经离开屏幕比较远的图块
至于卡马克只是优化嘛,不一定分割了就要用它~ cocos2dx如何加载超大型地图

TiledMap可以导出Json格式,里面的数据全都有,你可以自己写一个解析和动态加载释放的类,这样就可以用TiledMap编辑你的地图(包括障碍层),障碍物检测什么的就很好实现了~
哎,还得自己写类,郁闷~

#3


为什么要用到这么大的背景图?

#4


我做过一个无限循环的大背景图,只用了一张图片1280*800的图片,里面创建了4个实例对象。在玩家上下左右移动的时候,调整四张图的位置关系,就无限了。为啥要用10000*10000的。。。

#5


加载这么大的一张图,GPU吃得消么。。。

#6


10000乘以10000的图片,是不是世界大地图啊。看你制作哪种类型的游戏了。如果是RPG的话,那么要用瓦片图。做碰撞检测什么的也很方便。

#7


引用 5 楼 qqYang123456789 的回复:
加载这么大的一张图,GPU吃得消么。。。
地图就做成了这么大块。。。

#8


引用 6 楼 jiangcaiyang123 的回复:
10000乘以10000的图片,是不是世界大地图啊。看你制作哪种类型的游戏了。如果是RPG的话,那么要用瓦片图。做碰撞检测什么的也很方便。
可是瓦片地图不能处理PNG格式啊

#9


引用 8 楼 anhanjinj1 的回复:
Quote: 引用 6 楼 jiangcaiyang123 的回复:

10000乘以10000的图片,是不是世界大地图啊。看你制作哪种类型的游戏了。如果是RPG的话,那么要用瓦片图。做碰撞检测什么的也很方便。
可是瓦片地图不能处理PNG格式啊

瓦片地图是一种游戏的地图类型,png什么的cocos2d-x有支持libpng的。你需要做的是废弃你的大地图,然后使用Tiled制作一个地图场景,然后再导入游戏引擎中。这是目前非常流行的做法。

#10


cocos2dx-x有异步加载图片的接口,可以先调用这个,然后再生成地图,会从缓存中读取图片的

#11


引用 9 楼 jiangcaiyang123 的回复:
Quote: 引用 8 楼 anhanjinj1 的回复:

Quote: 引用 6 楼 jiangcaiyang123 的回复:

10000乘以10000的图片,是不是世界大地图啊。看你制作哪种类型的游戏了。如果是RPG的话,那么要用瓦片图。做碰撞检测什么的也很方便。
可是瓦片地图不能处理PNG格式啊

瓦片地图是一种游戏的地图类型,png什么的cocos2d-x有支持libpng的。你需要做的是废弃你的大地图,然后使用Tiled制作一个地图场景,然后再导入游戏引擎中。这是目前非常流行的做法。
你的意思是将大地图分成几个不同的场景?  我看别人的工程是吧大地图分割成很多个小块地图,然后动态载入这些小块拼成一幅图来显示。    

#12


引用 10 楼 tx183584 的回复:
cocos2dx-x有异步加载图片的接口,可以先调用这个,然后再生成地图,会从缓存中读取图片的
你的头像我也用过,仙剑4吧嘿嘿;

请问这个接口函数是属于哪个类的,我去瞅瞅。

#13


引用 11 楼 anhanjinj1 的回复:
Quote: 引用 9 楼 jiangcaiyang123 的回复:

Quote: 引用 8 楼 anhanjinj1 的回复:

Quote: 引用 6 楼 jiangcaiyang123 的回复:

10000乘以10000的图片,是不是世界大地图啊。看你制作哪种类型的游戏了。如果是RPG的话,那么要用瓦片图。做碰撞检测什么的也很方便。
可是瓦片地图不能处理PNG格式啊

瓦片地图是一种游戏的地图类型,png什么的cocos2d-x有支持libpng的。你需要做的是废弃你的大地图,然后使用Tiled制作一个地图场景,然后再导入游戏引擎中。这是目前非常流行的做法。
你的意思是将大地图分成几个不同的场景?  我看别人的工程是吧大地图分割成很多个小块地图,然后动态载入这些小块拼成一幅图来显示。    

既然你那个是地图,就用tile-based game开发方法进行开发吧。如果你想把图片作为横板过关游戏的背景,那么采用一定的算法进行背景的运动。

#14


引用 13 楼 jiangcaiyang123 的回复:
Quote: 引用 11 楼 anhanjinj1 的回复:

Quote: 引用 9 楼 jiangcaiyang123 的回复:

Quote: 引用 8 楼 anhanjinj1 的回复:

Quote: 引用 6 楼 jiangcaiyang123 的回复:

10000乘以10000的图片,是不是世界大地图啊。看你制作哪种类型的游戏了。如果是RPG的话,那么要用瓦片图。做碰撞检测什么的也很方便。
可是瓦片地图不能处理PNG格式啊

瓦片地图是一种游戏的地图类型,png什么的cocos2d-x有支持libpng的。你需要做的是废弃你的大地图,然后使用Tiled制作一个地图场景,然后再导入游戏引擎中。这是目前非常流行的做法。
你的意思是将大地图分成几个不同的场景?  我看别人的工程是吧大地图分割成很多个小块地图,然后动态载入这些小块拼成一幅图来显示。    

既然你那个是地图,就用tile-based game开发方法进行开发吧。如果你想把图片作为横板过关游戏的背景,那么采用一定的算法进行背景的运动。
不用啦,我找到了一个手机游戏的开源库,它有响应处理地图的方法,直接用它的吧~

#15


引用 14 楼 anhanjinj1 的回复:
Quote: 引用 13 楼 jiangcaiyang123 的回复:

Quote: 引用 11 楼 anhanjinj1 的回复:

Quote: 引用 9 楼 jiangcaiyang123 的回复:

Quote: 引用 8 楼 anhanjinj1 的回复:

Quote: 引用 6 楼 jiangcaiyang123 的回复:

10000乘以10000的图片,是不是世界大地图啊。看你制作哪种类型的游戏了。如果是RPG的话,那么要用瓦片图。做碰撞检测什么的也很方便。
可是瓦片地图不能处理PNG格式啊

瓦片地图是一种游戏的地图类型,png什么的cocos2d-x有支持libpng的。你需要做的是废弃你的大地图,然后使用Tiled制作一个地图场景,然后再导入游戏引擎中。这是目前非常流行的做法。
你的意思是将大地图分成几个不同的场景?  我看别人的工程是吧大地图分割成很多个小块地图,然后动态载入这些小块拼成一幅图来显示。    

既然你那个是地图,就用tile-based game开发方法进行开发吧。如果你想把图片作为横板过关游戏的背景,那么采用一定的算法进行背景的运动。
不用啦,我找到了一个手机游戏的开源库,它有响应处理地图的方法,直接用它的吧~


我的游戏不是横版,是类似于网页游戏那种ARPG

#16


你好,我最近也遇到了你这样的问题,也需要加载一块大型的世界地图,想请教一下你最后是怎么实现的,能加一下Q吗?我的Q是  1608412487

#17


同求 1277097685

#18


引用 16 楼 yanpengjeff 的回复:
你好,我最近也遇到了你这样的问题,也需要加载一块大型的世界地图,想请教一下你最后是怎么实现的,能加一下Q吗?我的Q是  1608412487

最后是,没有解决直接放弃了这种不现实的设想,如果你真的是工作需求,我推荐你去九秒社区找一找他们做的一些开源游戏项目,里面的地图加载他们有个库,不过也开源了,去看看吧,(注:他们那个手游的复杂度完全是页游级别的,看起来很纠结。)

#19


引用 17 楼 teng111teng 的回复:
同求 1277097685
同上,去找找看吧。

#20


同求啊380590023

#21


最好的办法是做一个大的空白panel 然后将你的大图分割成小的无缝连接 一个一个添加 这样资源不会很大 绘制效率也还行。

#22


我也开始要面对这问题,到底是用TIELD处理,还是怎么去处理,那楼主最后是参考9秒社区那个项目?

#23


引用 22 楼 yxlovemoney 的回复:
我也开始要面对这问题,到底是用TIELD处理,还是怎么去处理,那楼主最后是参考9秒社区那个项目?
是的就是九秒的那个项目,不过现在我已经转到U3D了。。。

#24


引用 21 楼 y541028105 的回复:
最好的办法是做一个大的空白panel 然后将你的大图分割成小的无缝连接 一个一个添加 这样资源不会很大 绘制效率也还行。
思路是将大地图分割成有序列的小块地图,然后动态载入这些地图,不在视野里的卸载掉。。不过得自己去写操作。。。

#25


<a href="http://www.baidu.com"><img src="https://img-bbs.csdn.net/upload/201508/03/1438569016_872424.gif"></a>

#26


该回复于2015-08-03 10:39:42被管理员删除

#27


该回复于2015-08-11 08:31:00被管理员删除