游戏开发引擎—cocos2d-x地图随精灵无限滚动与边缘检测--之游戏开发《赵云要格斗》(3)

游戏开发引擎—cocos2d-x地图随精灵无限滚动与边缘检测--之游戏开发《赵云要格斗》(3)

ID:13984316

大小:61.00 KB

页数:8页

时间:2018-07-25

游戏开发引擎—cocos2d-x地图随精灵无限滚动与边缘检测--之游戏开发《赵云要格斗》(3)_第1页
游戏开发引擎—cocos2d-x地图随精灵无限滚动与边缘检测--之游戏开发《赵云要格斗》(3)_第2页
游戏开发引擎—cocos2d-x地图随精灵无限滚动与边缘检测--之游戏开发《赵云要格斗》(3)_第3页
游戏开发引擎—cocos2d-x地图随精灵无限滚动与边缘检测--之游戏开发《赵云要格斗》(3)_第4页
游戏开发引擎—cocos2d-x地图随精灵无限滚动与边缘检测--之游戏开发《赵云要格斗》(3)_第5页
资源描述:

《游戏开发引擎—cocos2d-x地图随精灵无限滚动与边缘检测--之游戏开发《赵云要格斗》(3)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、游戏开发引擎—Cocos2d-x地图随精灵无限滚动与边缘检测--之游戏开发《赵云要格斗》(3)本文检索关键词:游戏引擎,游戏开发引擎,cocos引擎html5游戏开发本本章在前文《Cocos2d-x自定义按钮类控制精灵攻击》的基础上,实现了精灵向右运动到地图中间时,地图能跟着移动,但此时精灵是原地不动只是播放跑动画。并且,当地图移动到边缘时,地图不在移动,但此时精灵能移动同时播放跑动画。网上看了些别人写的地图,很多都是通过两张地图交替显示来实现,这里我就想通过一个地图来实现,英雄移动到地图的最左边或最右边时,地图不能移动,但是英雄还是

2、能移动。这样比较符合我们玩游戏时的情形。Cocos2d-x版本:2.2.5工程环境:windows7+VS2010下面是要滚动的地图,只有一张,但是很长。先看看效果一、在英雄类中增加判断英雄是否运动到了窗口的中间位置函数在上一篇的英雄类中再增加一个函数:12345678910//判断英雄是否运动到了窗口的中间位置,visibleSize为当前窗口的大小  bool JudgePositona(CCSize visibleSize);  然后这是它的实现:bool Hero::JudgePositona (CCSize visibleS

3、ize)  {       if(this->getPositionX()!=visibleSize.width/2)//精灵到达左边            return false;       else            return true;//到达中间位置  }二、自定义地图类这里为了后头地图能再实现其它功能,我自己又设计了一个地图类,它能根据英雄的运动还判断是否要移动地图。其实这里的地图就是一个CCSprite,然后把它加到当前类中,这个类是从CCNODE中派生的。然后根据当前英雄的位置来判断自己是否在进行移动,在Mo

4、veMap(CCNode*hero,CCSizevisibleSize)这个函数中,其实实现得很简单。传入当前英雄和当前窗口的大小,然后就是一些判断了。直接看代码Map.h:12345678910111213#ifndef __MAP_H__  #define __MAP_H__  #include "cocos2d.h"  USING_NS_CC;   class Map:public CCNode  {      public:           Map();          ~Map();          //初始化地图,

5、window_sizeo为控制台大小          void InitMap(const char *map_name,const CCSize &window_size);          //根据精灵的位置移动地图,visibleSize为当前窗口的大小          void MoveMap(CCNode *hero,CCSize visibleSize);          //判断地图是否到达边缘  14151617181920212223        bool JudgeMap(CCNode *hero,CCS

6、ize visibleSize);          //virtual void update(float delta);          CREATE_FUNC(Map);                 private:          CCSprite *m_map;//地图精灵     };  #endif // __MAP_H__然后这是它的实现Map.cpp:1234567891011121314#include "Map.h"  Map::Map():m_map(NULL)  {     }  Map::~Map(

7、)  {     }  void Map::InitMap(const char *map_name,const CCSize &window_size)  {      this->m_map=CCSprite::create(map_name);      m_map->setAnchorPoint(ccp(0,0));//设置锚点      this->setAnchorPoint(ccp(0,0));//设置锚点      this->addChild(m_map);      }  void Map::MoveMap(CCN

8、ode *hero,CCSize visibleSize)//  {  151617181920212223242526272829303132    if(hero->getPositionX()==visibleSi

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。