乱世王者地图实现方式讨论

1赞

乱世王者中的世界地图拖动十分流程,仔细看还有近大远小的透视效果,想问一下,在2d中,这种透视效果怎么实现比较合理?

卧槽。。 我也发帖问过这个实现。。 可惜没人理我。。 mark先。。。

这不就是普通的2d地图吗,近大远小自己根据y坐标计算然后缩放

细看的话不是简单的缩放,如果是缩放,远处建筑的间距会变大,建筑和景物的相对位置会发生变化。
但这些都没有发生。感觉是直接将2d面片在3D世界中倾斜了?

你的问题是2d中如何实现, 所以缩放 坐标也可以加上缩放

问了一下,3D camera.

2赞

3d camera会导致两个问题,第一,触摸位置错位,需要额外代码来纠正触摸位置,第二,如果开启了屏幕外自动裁切,会导致元素还在屏幕内,就已经不绘制了。之前项目用的3.13不知道新版本修复了这两个问题没有。

参考一下这个
http://blog.sina.com.cn/s/blog_62b2318d0101k8ep.html

这种应该只能对精灵使用吧,如果是世界地图这种容器,处理起来好像会很麻烦?

感谢王哲老大亲自回复,看来要研究一下3D摄像机了:smile:
乱世王者好像也是cocos2d做的,老大不会是直接问的腾讯的实现方式吧:heart_eyes:

我们用了一个很简单的方法实现了类似的效果, 就是将整个地图绕x轴向屏幕中旋转一定角度. 对应的 api:

setRotation3D

同时需要设置投影类型:

cc.Director:getInstance():setProjection(cc.DIRECTOR_PROJECTION3_D)

效果也还可以:

5赞

恩,是的。

3赞

加一个建议: 用内存池缓存城市和地图,不要频繁创建

1赞

对, 这两点我们也都遇到了.

1.触摸位置错位

不能用默认的 Button, 得自己监听触摸事件x,y通过一个公式得到旋转后的位置

2.错误的自动裁切

这个不好改, 我们用了一个很糙的方法, 那些元素剪裁有问题, 就给这些元素加一个标记, 再在c++剪裁的地方判断有这个标记的话就不进行剪裁

补充第三点:

直接加在旋转节点上的元素也会被旋转, 造成被压扁的效果, 所以要通过修改X缩放修正这个问题.

总之, 这个方法还是比较麻烦的

请问触摸错位坐标转换怎么转换的

做一张梯形图, 修改,uv即可

我记得去年有分享,说是改了引擎