cocos2d-x 游戏中障碍物的实现原理
来源:互联网 发布:手机怎么开淘宝直播 编辑:程序博客网 时间:2024/04/30 20:24
也许大家在cocos2d-x的学习中,可能很少去使用地图。(我当初刚学cocos2d的时候)也是尝试着去使用地图但是却不能利用地图做任何事情,当时在我看来,这地图是什么玩意啊,跟使用精灵的方法加载一张背景图片没什么两样嘛!后来我就不去使用地图了,因为不知道地图的功能。再后来,我发现仅仅使用背景是不能满足实际项目的需要的(具体是
哪方面的我就不解释啦)。所以我又回过头来研究地图这块,以我现在的学习情况看来,我觉得地图这块其实也不难做,只要愿意下些功夫专研。
我来给大家说两点地图坐标系和屏幕坐标系(1):别人说过的我就不多讲了(比如什么一个是y轴向下一个向上之类的。老生常谈,);我要说的是屏幕坐标是是以(点)为基本元素,而地图坐标系是以方格为基本元素:就像这样:
一格一格的。每个格子代表一个坐标。格子的大小是我们自己在创建地图的时候自己定的!
(这第二,不好意思忘了,回头我想起来再写上!)
好,那我接下来就给大家分享下游戏中障碍物得实现;我再收集网上的一些教程时,发现他们都是把主角精灵直接放到地图当中,其实没必要。(可能大家听得不是很明白:那我就说白一点:就是地图中的东西是完全可以和主角分开的。我举个例子:比如在地图中设置一个静止的障碍物,游戏场景中有一个(主角僵尸),那是不是说只有把主角僵尸精灵使用addChild()加载到地图中才能检测主角被障碍物阻止了呢!其实不是的。)
这章的源码如果都写出来可能一章写不完,所以我就随便贴点代码,有需要的可以在评论里留言。
好下面开始说障碍物的实现:(我先不些代码大家先看下这个地图)
大家看那个红色的区域,它是地图中的一个图层。我们可以使用map-》layername("Layer");来获取这个图层;再来看哪些红色的格子,它代表该图层的精灵。我们可以通过地图格子坐标的方法获取这些精灵;(那你也许会问怎么样才可以轻易的获取坐标呢?给大家看个图:)
大家看这个(7,21),就是地图中的一个精灵;这很好获取;
我们要实现障碍物,就就必须把主角僵尸的坐标先转化成地图格子坐标(而且要动态转化);
void JsLayer::update(float dt){转化过程!CCSize mapTiledNum = _map->getMapSize(); CCSize tiledSize = _map->getTileSize(); CCPoint point1 =this->_jsSprite->getPosition();point1.x=point1.x - this->speed;this->_jsSprite->setPosition(ccp(point1.x,point1.y));int x =this->_jsSprite->getPosition().x/ tiledSize.width; int y =this->_jsSprite->getPosition().y/ tiledSize.height; /* Cocos2d-x的默认Y坐标是由下至上的,所以要做一个相减操作 */ y = mapTiledNum.height - y; int tiledGid=_map->layerNamed("zhangai")->tileGIDAt(ccp(x,y)); if(tiledGid!=0) {CCDictionary* propertiesDict = _map->propertiesForGID(tiledGid); /* 取得格子的zhezhao属性值 */ const CCString* prop = propertiesDict->valueForKey("zhezhao"); /* 判断zhezhao属性是否为true,是的话,不让玩家移动 */ if(prop->m_sString.compare("true") == 0) { this->unscheduleUpdate();} } }
这样就可以了:是不是很easy!
- cocos2d-x 游戏中障碍物的实现原理
- Cocos2d-X游戏【泰然网《跑酷》】JS到C++移植11:添加金币和障碍物到地图中
- Cocos2D-x游戏开发之十二:在游戏背景上添加障碍物
- 《C++游戏开发》十八 角色在障碍物中智能行走的实现
- cocos2d-x游戏技能CD的实现
- cocos2d-x游戏摇杆的实现方法
- Cocos2d-X 游戏中CCTextField的使用方法
- cocos2d-x-2.1.3 中实现游戏的简单暂停与恢复
- cocos2d-x Action实现原理
- 【木头Cocos2d-x 014】游戏实例-《跑跑跑》制作教程(第六篇)——添加障碍物
- Cocos2d-X游戏【泰然网《跑酷》】JS到C++移植10:Adding Coins and Rocks【添加金币和障碍物】
- cocos2d-x中CCScale9Sprite的另一种实现
- cocos2d-x中各种动画的实现
- cocos2d-x中滚动视图的实现
- cocos2d-x中进度条的实现
- cocos2d-x入门(2)-实现一个简单的游戏SimpleGame
- 01.cocos2d-x游戏引擎的底层实现(引言)
- 使用cocos2d-x实现一款类似《Flappy Bird》的游戏
- Android中的android:layout_weight讲解
- 关于协方差和马氏距离的理解
- uiview animation
- 程序员不要太过于看重编码技巧,相比而言思想更重要
- JQuery EasyUI TreeGrid控件的使用——支持拖拽与禁止拖拽
- cocos2d-x 游戏中障碍物的实现原理
- 【问题记录】数据库打不开 报ORA-00845错误 /dev/shm设置过小
- 21个Javascript技巧
- Android仿微信底部菜单
- Holo 与 Android Design(转载观点,仁者见仁)
- 精心收集的Hadoop学习资料(持续更新)
- Windows 下编译安装lua
- Arcgis Flex下的缓冲分析
- java synchronized