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

本教程介绍如何使用Unity及Ferr2DTerrainTool插件快速设计2D地形,并将其导出为Cocos2d-x可用的plist文件格式。教程包括创建物理属性地形、调整地形细节、导出地形数据等步骤。
摘要由CSDN通过智能技术生成

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

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

效果如图:​

Cocos2d-x效果图 

利用Unity轻松快速制作地形

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

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

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

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

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

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

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

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

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

 

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

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

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

6.将脚本拖给地形:

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

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

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

导出地形到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

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

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

最终效果:​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值