Cocos2d-JS 实现将TiledMap中的每个 tile 变成物理精灵的方法
2015-12-14 11:04
519 查看
How to generate a physics body from a tiledmap
鄙人在网上找了许久都未找到方法,说句实在话,Cocos2d官方给出的与物理引擎相关的内容真的不是很多,而且好水!目前市场上的关于Cocos2d-JS的书籍本身就不多,况且甚至没有提及如何将瓦片地图转为物理精灵的方法。
在查询了很多Cocos2d-X 的资料后才发现,Cocos2d 的 Node 节点 都存有一个 setPhysicsBody( physicsBody ) 的方法,而我们可以通过 getTileAt( tileCoord ) 获取每个 Tile 的精灵。
显然精灵肯定是继承或者间接继承自 Node 节点的,所以,只要在获取 每个 Tile 的精灵后,使用 setPhysicsBody 方法,即可将 每个 Tile 物理精灵化,将 每个 Tile 带进物理世界,这样就可以利用Chipmunk 或者 Box2d 愉快的进行碰撞检测了。
注解
如果body非空,这个方法将会设置锚点为Vec2::ANCHOR_MIDDLE, 并且当有物理body存在的情况下你不可以改变这个锚点。
参数
body 附加给节点的物理body
但是,好像JS没有实现这个方法,真是悲剧
鄙人在网上找了许久都未找到方法,说句实在话,Cocos2d官方给出的与物理引擎相关的内容真的不是很多,而且好水!目前市场上的关于Cocos2d-JS的书籍本身就不多,况且甚至没有提及如何将瓦片地图转为物理精灵的方法。
在查询了很多Cocos2d-X 的资料后才发现,Cocos2d 的 Node 节点 都存有一个 setPhysicsBody( physicsBody ) 的方法,而我们可以通过 getTileAt( tileCoord ) 获取每个 Tile 的精灵。
显然精灵肯定是继承或者间接继承自 Node 节点的,所以,只要在获取 每个 Tile 的精灵后,使用 setPhysicsBody 方法,即可将 每个 Tile 物理精灵化,将 每个 Tile 带进物理世界,这样就可以利用Chipmunk 或者 Box2d 愉快的进行碰撞检测了。
var setPhysicsBody( var body )
注解
如果body非空,这个方法将会设置锚点为Vec2::ANCHOR_MIDDLE, 并且当有物理body存在的情况下你不可以改变这个锚点。
参数
body 附加给节点的物理body
但是,好像JS没有实现这个方法,真是悲剧
相关文章推荐
- Cocos2d-x之可拉伸图片
- 【cocos2d-x 3D游戏开发】3: 游戏帧循环
- cocos2dx-3.x中如何在update中传入多个参数(利用std::bind实现)
- Cocos2D-Android-1之源码详解:8.DrawPrimitivesTest
- cocos2dx 3.0怎么导入模板到vs2013/创建新工程
- cocos2d-x游戏开发 跑酷(四) 关联与物理世界
- 使用cocos2d 2.1制作一条河游戏(4): 主要的游戏逻辑BaseLayer设计
- Cocos2d-JS游戏导演
- cocos2d-x学习笔记(11)回调CallFunc,lambda
- Cocos2d-JS场景树
- cocos2d-x 面试题
- Cocos2d-JS的屏幕适配方案
- Cocos2d-JS坐标系统
- 学习cocos-js的准备工作
- Cocos2d-x 之 自己生成API文档
- cocos2dx 的android.mk编辑 添加Classes目录下的所有cpp文件
- Cocos2D-Android-1之源码详解:16.ParticleTest
- cocos2d-x增加控制台程序代码
- cocos2d-x学习笔记(10)重复动作RepeatForever和Repeat 以及动作组合Sequence和Spawn
- cocos2d-x学习笔记(9)BezierTo和BezierBy贝赛尔曲线运动