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





  • 相关阅读:
    5.14事务
    5.13Mysql数据库Database
    未来打算
    浅谈P NP NPC
    1222
    1219
    Linux初等命令
    惩罚因子(penalty term)与损失函数(loss function)
    12 14
    java 泛型思考
  • 原文地址:https://www.cnblogs.com/xinyuyuanm/p/3019504.html
Copyright © 2011-2022 走看看