cocos2d-x游戏实例(4)-地图碰撞
来源:互联网 发布:nodejs java 分离设计 编辑:程序博客网 时间:2024/05/18 22:13
小满(bill man)个人原创,欢迎转载,转载请注明地址,小满(bill man)的专栏地址http://blog.csdn.net/bill_man
这篇继续上一篇的内容,继续地图碰撞,上一篇我们得到了我们所处位置的地图索引,这样我们就可以知道我们要控制的角色的位置对应的地图索引值了,那么如何知道我们这块地图是可以去的还是碰撞呢,这里我介绍两种办法
1.分层法
我觉得这个更适合45度角的地图,因为如果使用后一种办法,把所有的图素宽放在一层里的话,会有遮挡这个问题的,当然不是说第二种不能只不过我们把地图的碰撞图素放在一层里我们会把相应的表现图素放在新的一层里,所以还是要分层。
首先看第一种情况的地图,如下图
就是新建一层Tree层,把所有的树(这里不能碰撞的图素),grass层铺满草,这里人可以在草中移动,检测碰撞的代码如下:
首先通过convertto2d函数获得主角在地图上的索引值,这里为了方便,我把索引值也做成CCPoint的类型了,但是事实上,它并不是一个CCPoint,然后获得Tree层,然后根据索引及tileAt函数获得在该位置的图素,如果他不为空,则证明这个位置是不可碰撞的,那么我们就回滚刚才的移动位置操作,并停止该位置的移动即可。这种方法解决起来相对简单。
2.地图GID及属性法
这种方法应该是更为“正统”的,首先在地图上建一层,如下
只是建一层,然后我们在图素上新建属性,我们建一个叫“conflict”属性,并为他设定不同的值即可。
我们把不可碰得设为1,把可碰的设为0。代码如下:
我们首先或取GID,其实我们可以根据gid直接判断哪些可碰哪些不能通过。但是为了演示如何获得属性,我们还有之后的代码,通过gid获得属性,属性是一组键值对,然后获得conflict值,这样我们就可以判断了
如有错误之处,希望大家多多指正
下一篇继续游戏实例
- cocos2d-x游戏实例(4)-地图碰撞
- cocos2d-x游戏实例(4)-地图碰撞
- cocos2d-x游戏实例(3)-获得地图索引
- cocos2d-x游戏实例(3)-获得地图索引
- cocos2d-x游戏实例(3)-获得地图索引
- <cocos2d-x for wp7>使用cocos2d-x制作基于Tile地图的游戏:碰撞检测和收集物品(二)
- Cocos2d-X 瓦片地图使用的实例项目(包含碰撞检测,移动)
- cocos2d-x 3.0游戏实例学习笔记 《跑酷》第七步--物理碰撞检测(1)
- 跑酷类游戏------quick-Cocos2d-X lua添加瓦片地图、瓦片地图的移动以及碰撞检测
- cocos2d-x游戏开发系列教程-坦克大战游戏之子弹和地图碰撞
- cocos2d-x游戏实例(10)-塔防游戏(修改地图图素,地图整体缩放)
- cocos2d-x游戏实例(10)-塔防游戏(修改地图图素,地图整体缩放)
- Cocos2D-x游戏开发之十九:瓦块地图之碰撞检测
- cocos2d-x 3.0游戏实例学习笔记 《跑酷》第七步--物理碰撞检测(2)--主角吃金币
- cocos2d-x游戏开发系列教程-坦克大战游戏之坦克和地图碰撞的检测上
- cocos2d-x游戏开发系列教程-坦克大战游戏之坦克和地图碰撞的检测下
- cocos2d-x游戏实例(26)-简易动作游戏(4)
- cocos2d-x游戏实例(26)-简易动作游戏(4)
- cocos2d-x游戏实例(2)-主角根据输入移动
- 《破坏之王—DDoS攻击与防范深度剖析》
- cocos2d-x游戏实例(3)-获得地图索引
- OpenFlow协议之殇?
- Lucene索引的增删改查和二次检索
- cocos2d-x游戏实例(4)-地图碰撞
- 关于尾递归
- Android最佳性能实践(
- Java中native关键字
- cocos2d中文显示问题的解决方法
- Flex与servlet数据交互3(xml解析)
- // 插入排序 源码
- leetcode-237-Delete Node in a Linked List
- ie7 slideup,mouseleave...的bug的解决