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轻松快速制作地形

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

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

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

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

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

填写图片摘要(选填)

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

填写图片摘要(选填)

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

填写图片摘要(选填)

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

Ferr2D Terrain Tool插件使用很简单,详细教程自行Google​

填写图片摘要(选填)


​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<Vec2> 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来填充贴图:

最终效果:​

  填写图片摘要(选填)

原创教程,转载请注明出处。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值