【cocos2d-x IOS游戏开发-城市跑酷5】导演说:动起来,动起来!
2013-12-07 15:49
351 查看
尊重开发者的劳动成果,转载的时候请务必注明出处:http://blog.csdn.net/haomengzhu/article/details/17187873
<捕鱼达人>回顾
【cocos2d-x
IOS游戏开发-捕鱼达人1】内容介绍
上节回顾
【cocos2d-x
IOS游戏开发-城市跑酷4】设置“道具”:云、路灯、竞技团队
游戏的背景有了,“道具”也有了,就这样摆在那里;
导演来了说:怎么不动啊,动起来,动起来!!
当精灵在场景中移动的时候,不可能只限制在地图的那一部分内移动。。
我们还需要看到地图更多的东西,这时就需要场景跟随着精灵移动。
来看具体实现:
加入背景层精灵:
为了能让整个游戏动起来,就需要移动场景了。
移动背景层:城市也在移动
当云朵从屏幕左侧完全消失的时候,应该从屏幕右侧显示出来,这样让云朵飘起来。
思想:如果精灵的任何一个方向(x,y)的位置的值大于屏幕的大小,那么就需要移动将屏幕中心移动到该点(这是我的这个游戏的设定,其他的也可以),如果精灵就是在地图的左下角那一部分(0,0)到(screenSize.width/2,screenSize.height/2),那么我们还是一样的想法,只不过这次是将屏幕中心移动原来的屏幕中心,实际上还是没有移动。屏幕要移动到(x,y),那么就需要场景从(screenSize.width/2-x,screenSize.height/2-y)这个方向去移动,屏幕肯定不会移动了啦,移动的是场景。但是竞技团队是一个在背景层上的精灵,可以让团队移动,让团队CCMoveTo到屏幕的某点【CCMoveTo是移动到指定坐标】,也就是看起来是在移动了。
来看下竞技团队的移动实现:
下一节更精彩:诺大的城市,街区呢?房子呢?
博主带你一起创建属于你自己的城市!!
<捕鱼达人>回顾
【cocos2d-x
IOS游戏开发-捕鱼达人1】内容介绍
上节回顾
【cocos2d-x
IOS游戏开发-城市跑酷4】设置“道具”:云、路灯、竞技团队
游戏的背景有了,“道具”也有了,就这样摆在那里;
导演来了说:怎么不动啊,动起来,动起来!!
当精灵在场景中移动的时候,不可能只限制在地图的那一部分内移动。。
我们还需要看到地图更多的东西,这时就需要场景跟随着精灵移动。
来看具体实现:
加入背景层精灵:
//加入背景:城市灯火 _background = CCSprite::createWithSpriteFrameName("background.png"); _background->setAnchorPoint(ccp(0,0)); //主要是提高运行速度 _gameBatchNode->addChild(_background, kBackground); //将两张背景图连起来,不停的滚动 repeat = CCSprite::createWithSpriteFrameName("background.png"); repeat->setAnchorPoint(ccp(0,0)); repeat->setPosition(ccp(repeat->getContentSize().width - 1, 0)); ////CCNode的添加 _background->addChild(repeat, kBackground); repeat = CCSprite::createWithSpriteFrameName("background.png"); repeat->setAnchorPoint(ccp(0,0)); repeat->setPosition(ccp(2 * (repeat->getContentSize().width - 1), 0)); _background->addChild(repeat, kBackground);设置前景层:
//设置路灯 _foreground = CCSprite::createWithSpriteFrameName("lamp.png"); _foreground->setAnchorPoint(ccp(0,0)); _gameBatchNode->addChild(_foreground, kForeground); repeat = CCSprite::createWithSpriteFrameName("lamp.png"); repeat->setAnchorPoint(ccp(0,0)); repeat->setPosition(ccp(repeat->getContentSize().width * 4, 0)); _foreground->addChild(repeat, kBackground); repeat = CCSprite::createWithSpriteFrameName("lamp.png"); repeat->setAnchorPoint(ccp(0,0)); repeat->setPosition(ccp(repeat->getContentSize().width * 8, 0)); _foreground->addChild(repeat, kBackground);
为了能让整个游戏动起来,就需要移动场景了。
移动背景层:城市也在移动
//一直往左移 _background->setPositionX(_background->getPosition().x - 5); float diffx; //移完一个宽度时,重新把位置设置为接近0的位置 //getContentSize获得精灵矩形的宽高 if (_background->getPositionX() < -_background->getContentSize().width) { diffx = fabs(_background->getPositionX()) - _background->getContentSize().width; //移动场景 _background->setPositionX(-diffx); }移动前景层:路灯也在向左移动
_foreground->setPositionX(_foreground->getPosition().x - 10); if (_foreground->getPositionX() < -_foreground->getContentSize().width * 4) { diffx = fabs(_foreground->getPositionX()) - _foreground->getContentSize().width * 4; _foreground->setPositionX(-diffx); }移动精灵:云朵
当云朵从屏幕左侧完全消失的时候,应该从屏幕右侧显示出来,这样让云朵飘起来。
int count = _clouds->count(); CCSprite * cloud; for (int i = 0; i < count; i++) { cloud = (CCSprite *) _clouds->objectAtIndex(i); cloud->setPositionX(cloud->getPositionX() - 3); //把云朵想象成一个盒子 if (cloud->getPositionX() + cloud->boundingBox().size.width * 0.5f < 0 ) cloud->setPositionX(_screenSize.width + cloud->boundingBox().size.width * 0.5f); }移动精灵:竞技团队
思想:如果精灵的任何一个方向(x,y)的位置的值大于屏幕的大小,那么就需要移动将屏幕中心移动到该点(这是我的这个游戏的设定,其他的也可以),如果精灵就是在地图的左下角那一部分(0,0)到(screenSize.width/2,screenSize.height/2),那么我们还是一样的想法,只不过这次是将屏幕中心移动原来的屏幕中心,实际上还是没有移动。屏幕要移动到(x,y),那么就需要场景从(screenSize.width/2-x,screenSize.height/2-y)这个方向去移动,屏幕肯定不会移动了啦,移动的是场景。但是竞技团队是一个在背景层上的精灵,可以让团队移动,让团队CCMoveTo到屏幕的某点【CCMoveTo是移动到指定坐标】,也就是看起来是在移动了。
来看下竞技团队的移动实现:
_jam->setPosition(ccp(_screenSize.width * 0.19f, _screenSize.height * 0.47f)); _jamMove = CCMoveTo::create(6.0f, ccp(-_screenSize.width * 0.3f, _jam->getPositionY())); _jamMove->retain();当主角跑的太快超越竞技团队,把其他人甩到后面时,团队就应该消失了。
if (_jam->getPositionX() < -_screenSize.width * 0.2f) { _jam->stopAllActions(); _jam->setVisible(false); }初步的效果图:
下一节更精彩:诺大的城市,街区呢?房子呢?
博主带你一起创建属于你自己的城市!!
相关文章推荐
- 【cocos2d-x IOS游戏开发-城市跑酷8】实现街区房子的摆放
- 【cocos2d-x IOS游戏开发-城市跑酷12】男一号上场,大家鼓掌!
- 【cocos2d-x IOS游戏开发-城市跑酷9】没有各种坑还叫游戏吗
- 【cocos2d-x IOS游戏开发-城市跑酷13】游戏玩法:友情提示:how to play?
- 【cocos2d-x IOS游戏开发-城市跑酷2】python create_project
- 【cocos2d-x IOS游戏开发-城市跑酷3】读取资源,设置背景层
- 【cocos2d-x IOS游戏开发-城市跑酷14】重写触屏[Touch]事件处理机制,响应玩家操作
- 【cocos2d-x IOS游戏开发-城市跑酷16】碰撞检测:撞墙 or 从房子上掉下来
- 【cocos2d-x IOS游戏开发-城市跑酷6】添加街区元素:墙、屋顶、烟囱
- 【cocos2d-x IOS游戏开发-城市跑酷10】完善繁荣的城市街区及地形图类
- 【cocos2d-x IOS游戏开发-城市跑酷17】Game Over,主角死亡?+死亡特效:帽子飞起来!
- 【cocos2d-x IOS游戏开发-城市跑酷18】统计结果,主角复活Try Again!!
- 【cocos2d-x IOS游戏开发-城市跑酷4】设置“道具”:云、路灯、竞技团队
- 【cocos2d-x IOS游戏开发-城市跑酷7】设计烟囱与烟的效果
- 【cocos2d-x IOS游戏开发-城市跑酷19】游戏效果图及资源引用页
- 【cocos2d-x IOS游戏开发-城市跑酷1】跑酷游戏介绍
- 【cocos2d-x IOS游戏开发-城市跑酷15】完善积分板【CCLabelBMFont】
- cocos2d-x ios游戏开发初认识(三) 帧回掉
- 【cocos2d-x IOS游戏开发-捕鱼达人2】cocos2d-x简介与开发环境搭建
- 【cocos2d-x IOS游戏开发-捕鱼达人8】游戏中的配置文件