Cocos2d-x利用Unity轻松快速设计复杂2D地形

本教程用到的工具:Cocos2d-x 3.7、Unity插件Ferr2D Terrain Tool 1.0.8

原理:将Unity的优势为Cocos2d-x所用。使用Unity强大插件轻松拖出复杂2D地形,然后将地形点导出到plist文件给Cocos2d-x​使用。

效果如图:​

Cocos2d-x利用Unity轻松快速设计复杂2D地形_第1张图片Cocos2d-x效果图 

Cocos2d-x利用Unity轻松快速设计复杂2D地形_第2张图片利用Unity轻松快速制作地形

​一、Unity 结合 Ferr2D Terrain Tool快速设计2D地形

1.打开Unity并导入Ferr2D Terrain Tool插件:

2.创建一个带有物理属性的2D地形:

Cocos2d-x利用Unity轻松快速设计复杂2D地形_第3张图片创建一个带有物理属性的2D地形

​弹出对话框,这里我们做如图选择

Cocos2d-x利用Unity轻松快速设计复杂2D地形_第4张图片

3.为了让地形更平滑精致,我们做如图设置:

Cocos2d-x利用Unity轻松快速设计复杂2D地形_第5张图片

这里我们只需要顶部的顶点,只保留Top勾选

Cocos2d-x利用Unity轻松快速设计复杂2D地形_第6张图片

4.根据需求拖动设计地形:

Ferr2D Terrain Tool插件使用很简单,如果不明白可自行搜索相关教程​​

Cocos2d-x利用Unity轻松快速设计复杂2D地形_第7张图片

 

​5.导出地形数据到plist文件,代码实现:

​脚本下载链接:http://pan.baidu.com/s/1gdGp1mz 密码:zeka

代码中注释非常清楚了,这里不再详细说明。

6.将脚本拖给地形:

Cocos2d-x利用Unity轻松快速设计复杂2D地形_第8张图片

​注意:由于要将Unity世界坐标系的点转换为屏幕坐标系(以像素为单位的点),所以场景中一定要有个Camera,操作如图: 将Camera拖到脚本的Camera位置

Cocos2d-x利用Unity轻松快速设计复杂2D地形_第9张图片

​7.点击Unity运行按钮运行游戏,然后点击导出地图按钮:

默认导出路径是C://TerrainPoints.plist

Cocos2d-x利用Unity轻松快速设计复杂2D地形_第10张图片导出地形到plist文件

8.Cocos2d-x读取地形plist文件:

Cocos2d-x读取plist文件很简单,代码如下:

//创建Dictionary​

auto dic = Dictionary::createWithContentsOfFile("TerrainPoints.plist");

//定义一个Vector容器,用于存放​所有地形点

std::vector terrainPointsVector​;

//读取点的数组

auto arr = (Array*)dic->objectForKey("points");

for (int i = 0; i < arr->count(); i++)

{

auto pointStr = (String*)arr->getObjectAtIndex(i);

auto point = PointFromString(pointStr->getCString());

//将点放入vector容器

terrainPointsVector.push_back(point);

}

 

然后就可以通过容器terrainPointsVector创建物理地形曲线:

以Cocos2d-x封装物理为例:

auto terrainBody = PhysicsBody::create();//物理Body​

auto terrainShape = PhysicsShapeEdgeChain::create(&terrainPointsVector[0],terrainPointsVector.size());​//通过地形点创建物理shape

PhysicsMaterial mater;//设置地形的摩擦力等属性

mater.friction = 3.0f;

mater.restitution = 0.1f;

terrainShape->setMaterial(mater);

terrainBody ->addShape(terrainShape);//将物理shape绑定到物理Body

​这样就创建了带有物理属性的地形曲线,效果如图:

Cocos2d-x利用Unity轻松快速设计复杂2D地形_第11张图片

当然,为了美观还要以terrainPoints容器中的顶点,用OpenGL来填充贴图:

最终效果:​

Cocos2d-x利用Unity轻松快速设计复杂2D地形_第12张图片

你可能感兴趣的:(cocos2d-x,cocos2d-x,复杂2D地形)