谈到地图不少人都说要做地图编辑器了,但是我暂时绕过这一步,如果不用寻路地图就不能移动?寻路就是会绕过障碍物的算法。
我做了一个简单的地图的思想,就是地图分层3层:背景层、可行区域层、遮罩层,但是地图就不寻路了,通过设置可行区域层来
实现地图障碍物的方法。下面看一个视图,我把地图详细的分层了:
OK,有了这个思路,大家应该也知道我要怎么做了?代码实现上怎么处理呢?
重点:可行区域层原理是根据点击屏幕上的坐标点来取得这个点是否透明!如果不透明那就不让他进行移动,透明则为不可行区域;
首先感谢一下为我提供取色源码的哥们(firedragonpzy),帮助我实现了这个另类的地图设计;下面我贴一下他的源码,
新建了FDPixelSprite.cpp,FDPixelSprite.h代码如下:
FDPixelSprite.h
// // FDPixelSprite.h // PixelDemo // // Created by firedragonpzy on 13-2-19. // // #ifndef __PixelDemo__FDPixelSprite__ #define __PixelDemo__FDPixelSprite__ #include "cocos2d.h" USING_NS_CC; class FDPixelSprite : public CCSprite, public CCTargetedTouchDelegate { public: FDPixelSprite(); virtual ~FDPixelSprite(); void onEnter(); void onExit(); void setimg(CCString Url); FDPixelSprite* create(CCString Url); CCImage* img ; CCRect atlasRect(); bool isContainTouchLocation(CCTouch *pTouch); bool ccTouchBegan(CCString thismapurl,CCTouch *pTouch, CCEvent *pEvent); void ccTouchMoved(CCTouch *pTouch, CCEvent *pEvent); void ccTouchEnded(CCTouch *pTouch, CCEvent *pEvent); CC_SYNTHESIZE(const char*, m_pName,Name); }; #endif /* defined(__PixelDemo__FDPixelSprite__) */