大佬教程收集整理的这篇文章主要介绍了Cocos2d游戏开发无限滚动地图--以Cocos2d-x游戏开发之旅为例课本第5章little runner,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
此书第89页指出了如何实现无限滚动地图,在这里,我们一起分析一下算法:
地图需要2张背景图连在一起,首先把一张地图进行水平翻转,用Ps说明如下:
@H_262_10@背景@H_262_10@1@H_262_10@:@H_262_10@@H_522_13@m_bgSprite1
翻转后:@H_262_10@
背景@H_262_10@2@H_262_10@:@H_262_10@
@H_510_0@m_bgSprite2
把翻转后的这两张地图进行相连,一张地图代表屏幕尺寸大小,这样就能构成无限滚动地图的前提条件。在我们这个程序里,我们是在void@H_262_10@TollgateScene@H_262_10@::initBG()里用了m_bgSprite2->setFlipX(true@H_262_10@); // @H_262_10@水平翻转精灵@H_262_10@ @H_262_10@,相当于第二张地图通过第一张地图进行翻转得到了。
接下来我们分析如何实现无限滚动地图,原书程序代码如下:
void@H_262_10@ TollgateScene@H_262_10@::update(float@H_262_10@delta@H_262_10@) {
int@H_262_10@posx1 = m_bgSprite1->getPositionX(); //@H_262_10@背景地图@H_262_10@1@H_262_10@的@H_262_10@x@H_262_10@坐标@H_262_10@
int@H_262_10@posx2 = m_bgSprite2->getPositionX(); //@H_262_10@背景地图@H_262_10@2@H_262_10@的@H_262_10@x@H_262_10@坐标@H_262_10@
int@H_262_10@iSpeed =3; // @H_262_10@地图滚动速度@H_262_10@
/*@H_262_10@两张地图向左滚动(两张地图是相邻的,所以要一起滚动,否则会出现空隙)@H_262_10@*/@H_262_10@
posx1-= iSpeed;
posx2-= iSpeed;
/*@H_262_10@地图大小@H_262_10@ */@H_262_10@
CCSize@H_262_10@ mapSize = m_bgSprite1->getContentSize();
/*@H_262_10@当第@H_262_10@1@H_262_10@个地图完全离开屏幕时,让第@H_262_10@2@H_262_10@个地图完全出现在屏幕上,同时让第@H_262_10@1@H_262_10@个地图紧贴在第@H_262_10@2@H_262_10@个地图后面@H_262_10@*/@H_262_10@
if@H_262_10@(posx1< -mapSize.width /2) {
posx2= mapSize.width / 2;
posx1= mapSize.width + mapSize.width / 2;
}
/*@H_262_10@同理,当第@H_262_10@2@H_262_10@个地图完全离开屏幕时,让第@H_262_10@1@H_262_10@个地图完全出现在屏幕上,同时让第@H_262_10@2@H_262_10@个地图紧贴在第@H_262_10@1@H_262_10@个地图后面@H_262_10@*/@H_262_10@
if@H_262_10@(posx2< -mapSize.width / 2) {
posx1= mapSize.width / 2;
posx2= mapSize.width + mapSize.width / 2;
}
m_bgSprite1->setPositionX(posx1);
m_bgSprite2->setPositionX(posx2);
// @H_262_10@以下这个函数的其它代码,与无限滚动地图无关,因此以下代码略去@H_262_10@
…………此部分代码已经略去
}
/* @H_262_10@当第@H_262_10@1@H_262_10@个地图完全离开屏幕时,让第@H_262_10@2@H_262_10@个地图完全出现在屏幕上,同时让第@H_262_10@1@H_262_10@个地图紧贴在第@H_262_10@2@H_262_10@个地图后面@H_262_10@*/@H_262_10@
if@H_262_10@(posx1< -mapSize.width /2) {
posx2= mapSize.width / 2;
posx1= mapSize.width + mapSize.width / 2;
首先明确的是,每一张背景地图都是和屏幕的尺寸的一样大的,这样才能覆盖住屏幕。屏幕的坐标是在屏幕的中心点。这三句话,我们可以用如下图片来表达,这样更清楚:
以上是大佬教程为你收集整理的Cocos2d游戏开发无限滚动地图--以Cocos2d-x游戏开发之旅为例课本第5章little runner全部内容,希望文章能够帮你解决Cocos2d游戏开发无限滚动地图--以Cocos2d-x游戏开发之旅为例课本第5章little runner所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。