特殊节点对象

瓦片地图

在游戏开发过程中,我们会遇到超过屏幕大小的地图,这类游戏通常会有丰富的背景元素,如果直接使用背景图切换的方式,需要为每个不同的场景准备一张背景图,而且每个背景图都不小,这样会造成资源浪费。

瓦片地图就是为了解决这个问题而产生的。一张大的世界地图或者背景图可以由几中地形来表示,每种地形对应一张小的图片,我们称这些小的地形图片为瓦片。把这些瓦片拼接在一起,一个完整的地图就组合出来了,这就是瓦片地图的原理。

在 Cocos2d-x 中,瓦片地图实现的是 TileMap 方案,TileMap 要求每个瓦片占据地图上一个四边形或六边形的区域。把不同的瓦片拼接在一起,就可以组成完整的地图。TileMap 使用一种基于 XML 的 TMX 格式文件。

// reading in a tiled map.
auto map = TMXTiledMap::create("TileMap.tmx");
addChild(map, 0, 99); // with a tag of '99'

瓦片地图可能有很多层,通过层名获取到一个特定的层。

// how to get a specific layer
auto map = TMXTiledMap::create("TileMap.tmx");
auto layer = map->getLayer("Layer0");
auto tile = layer->getTileAt(Vec2(1, 63));

每个瓦片都有独一无二的位置和ID,这使我们可以很容易选择特定的瓦片。

// to obtain a specific tiles id
unsigned int gid = layer->getTileGIDAt(Vec2(0, 63));

粒子系统

粒子系统是指计算机图形学中模拟特定现象的技术,它在模仿自然现象、物理现象及空间扭曲上具备得天独厚的优势,能为我们实现一些真实自然而又带有随机性的效果。

使用工具可以完成粒子特效的设计,最终会导出一个.plist文件。

// create by plist file
auto particleSystem = ParticleSystem::create("SpinningPeas.plist");

视差滚动

视差滚动是指让多层背景以不同的速度移动,从而形成的立体运动效果。通过ParallaxNode对象模拟视差滚动,它类似Menu像一个容器,本身不移动,移动的是被添加进入其中的不同子节点。

// create ParallaxNode
auto paraNode = ParallaxNode::create();
// create ParallaxNode
auto paraNode = ParallaxNode::create();

// background image is moved at a ratio of 0.4x, 0.5y
paraNode->addChild(background, -1, Vec2(0.4f,0.5f), Vec2::ZERO);

// tiles are moved at a ratio of 2.2x, 1.0y
paraNode->addChild(middle_layer, 1, Vec2(2.2f,1.0f), Vec2(0,-200) );

// top image is moved at a ratio of 3.0x, 2.5y
paraNode->addChild(top layer, 2, Vec2(3.0f,2.5f), Vec2(200,800) );

需要注意的是,被添加的每个Node对象被赋予了一个唯一的z-order顺序,以便他们堆叠在彼此之上。另外需要注意addChild()调用中两个Vec2参数,第一个决定这个子节点的移动速度与父节点移动速度的比率,第二个是相对父节点ParallaxNode的偏移量。

 

最后欢迎大家访问我的个人网站:1024s​​​​​​​

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值