新手请教,如何用图块拼世界地图,能够实现近大远小的透视投影的特效;
用tiled map editor 能否实现呢,能否给个思路的?
你说的是两个功能
1、拼接地图
2、特效
功能1:可以使用tilemap,
功能2:是缩放效果?如果要加深度,那么用3D更合适。
嗯,对的。拼接用tiled map就可以完成了的。谢谢版主。我还有几个问题的:
- 现在要有近大远小的缩放效果的,能否通过2d拼接就能实现的?是不是一定要转为3D?
- 如果可以用2d拼接,是否要opengl转为梯形,然后进行拼接,这样是不是花销太大了?
- 用3D拼接,是否有工具啊,有的话,使用什么工具好一些呢?
用2D就可以实现拼接,之所以用3D是为了你的功能2特效。
不过,我想到另一个方法,仅仅用2D就可以实现了。
没错,摄像机。
哈哈哈哈
我试过相机,不过,如果图块的Z都是一样的,加入相机就没有看到效果,不知道是不是我设置相机有问题;图块的Z不一样的话,加入相机,由于透视投影,就无法拼接,会有锯齿的产生
相机应该可以的,Z值必须一样啊。
把地图add到一个sprite上,设置好position,加入相机,然后你是怎么做的?
最好给个demo吧,帮你看下。
嗯,我知道相机可以实现的。不过我之前没用过相机。加入相机后,无论我怎么改变相机,观察的对象位置都不变。
我创建相机:
mCamera = Camera::createPerspective(60, (float)size.width/size.height, 1, 1000);
mCamera->setCameraFlag(CameraFlag::USER1);
float zeye = Director::getInstance()->getZEye();
Vec3 eye(size.width/2, size.height/2.0f, zeye), center(size.width/2, size.height/2, 0.0f), up(0.0f, 1.0f, 0.0f);
mCamera->setPosition3D(eye);
center += Vec3(-size.width/2, -10000, 0);
mCamera->lookAt(center, up);
mMapNode->addChild(mCamera);
mMapNode->setCameraMask((unsigned short)CameraFlag::USER1, true);
mMapNode->setGlobalZOrder(10);
其中mMapNode是我创建的一个节点。我在这个节点里面加入精灵;
Sprite* cell = Sprite::create();
cell->initWithSpriteFrameName(“treasury_small.png”);
mMapNode->addChild(cell);
呼叫版主,请求帮助啊。。。
加我QQ吧,上周有点私事,今天给你解决。
QQ号已私密你。
自己回下,最后还是加上相机处理的。