基于WiEngine游戏引擎--背景移动

转发,请保持地址:http://blog.csdn.net/stalendp/article/details/8602281

手机游戏中动作类的游戏还是很受欢迎的,这些游戏中,大部分有着移动的背景。这篇文章将介绍使用WiEngine的wyParallaxNode类来实现这一效果。

使用wyParallaxNode,需要指定x和y轴的移动范围,其默认为[-MAX_FLOAT / 2,MAX_FLOAT / 2];下面的代码,限定了y轴不进行移动。

wyParallaxNode* parallax = wyParallaxNode::make();
parallax->setMinY(0);
parallax->setMaxY(0);
addChildLocked(parallax);

接着向wyParallaxNode中添加移动的sprite,我使用了两个图片作为背景(注:图片来源网络,只是用于学习目的):



其中一个用于前景,一个用于背景,以不同的速率进行移动。

要使图片进行反复迭代地出现,需要使用wyTiledSprite,定义如下:

wyTiledSprite* bg_front = wyTiledSprite::make(wyTexture2D::makePNG(RES("R.drawable.bg3")));
bg_front->setContentSize(wyDevice::winWidth, DP(115));
bg_front->setTileDirection(true, false);
bg_front->setAnchor(0, 0);
bg_front->setPosition(0, 0);

wyTiledSprite* bg_back = wyTiledSprite::make(wyTexture2D::makePNG(RES("R.drawable.bg2")));
bg_back->setContentSize(wyDevice::winWidth, DP(115));
bg_back->setTileDirection(true, false);
bg_back->setAnchor(0, 0);
bg_back->setPosition(0, 0);

接着把上面定义的sprite,添加到wyParallaxNode中,并指定不同的视差比例,代码如下:

parallax->addChild(bg_back, -1, 0.1f, 1.0f);
parallax->addChild(bg_front, 2, 1.0f, 2.0f);

最后让动画动起来:

wyTimer* timer = wyTimer::make(wyTargetSelector::make(this, SEL(Background::update)));
scheduleLocked(timer);
。。。。。

void update(wyTargetSelector* ts) {
	parallax->offsetBy(5, 0);
}

效果如下:




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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值