zoukankan      html  css  js  c++  java
  • 【Cocos2DX 】初窥门径(7)无限地图滚动

    地图的滚动原理很简单,就是持续设置地图的位置即可。具体实现用schedule()函数。

    	pMap = CCSprite::create("MapHenn.png");
    	pMap->setPosition(ccp(mSize.width/2, mSize.height/2));
    	this->addChild(pMap, 0);
    
    	schedule(schedule_selector( SpriteScene::updateMap),0.1f);


    schedule()函数的作用就是根据指定时间,持续调用一个函数。

    然后再updateMap()中更新地图的位置。

    void  SpriteScene::updateMap(float dt)
    {
    	pMap->setPositionX(pMap->getPositionX()-5);
    	
    }


    Ctrl + F5,就可以看到地图持续向左边滚动了,

    还有个问题就是滚动到地图最右边,就会没有背景,在updateMap()中加个限制就好。

    void  SpriteScene::updateMap(float dt)
    {
    	pMap->setPositionX(pMap->getPositionX()-5);
    	//如果地图滚动到最右边,让其恢复初始位置
    	if(pMap->getPositionX() < -pMap->getContentSize().width/2+mSize.width)
    	{
    		pMap->setPosition(ccp(mSize.width/2, mSize.height/2));
    	}
    }


    这里只写了地图向左滚动,向右滚动同理。

    如果在场景中在加一个动态的角色,然后滚动地图,就会造成人物行走的效果,2D锁视角的游戏就是这个原理。


    效果图:





    转载请注明出处:http://blog.csdn.net/Vestigge





  • 相关阅读:
    第10组 Beta冲刺(4/5)
    第10组 Beta冲刺(5/5)
    第10组 Beta冲刺(3/5)
    第10组 Beta冲刺(2/5)
    第10组 Beta冲刺(1/5)
    第10组 Alpha事后诸葛亮
    第10组 Alpha冲刺(6/6)
    第10组 Alpha冲刺(5/6)
    软工实践个人总结
    第09组 Beta版本演示
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3019504.html
Copyright © 2011-2022 走看看