-
Creator 版本:1.8.0
-
目标平台:Web / 模拟器
最近项目用到了tiledmap,tiledmap地图设置了一个对象层,由于需要区别不同的对象,所以在编辑地图时,设置了对象层对象的type,如下图:

编辑生成的tmx文件显示正常,如下图:
但是在creator程序里再去获取就获取不到,使用如下api,
输出如下:
全部type都为零,不知道问题出在哪里?是tiledmap版本太低吗?
试试 console.log(obj) ,然后在浏览器log里展开输出的结果看看有没有哪个属性是你想要的数值。
自己做的时候 type 这个字段总是被其他属性覆盖……
这个我输出过,我还特意把一个type给改成了一串字母,输出里就找不到

我能想到的就是这个方法了,不过很好奇为什么类型这里解析不出来,是bug吗
引擎里的type字段有其他的含义,把地图的type字段给覆盖了,不知道是不是bug,还是有其他原因故意覆盖的
此外还发现定义在对象层下的自定义属性在模拟器运行时获取不到,浏览器下正常
自定义属性用 getProperty 获取试试,另外没有定义的属性名在模拟器下获取是当做错误处理的
楼主,怎么用tiledMap实现角色自由移动并且和格子发生碰撞的呢?
我只会走格子碰撞
用物理:
用代码对每个 Tile 被标记自定义属性为障碍的格子创建一个 PhysicsBoxCollider
或者用代码对对象层里每个被标记为障碍的对象创建 PhysicsBoxCollider
给角色添加 PhysicsCircleCollider
不用物理:
自己处理角色移动时的 xy 坐标变化,自己计算角色碰撞区域和 tile/对象层对象 的碰撞区域处理,比如可以简单的做方块aabb碰撞计算,可以用 cc.Intersection
2赞
嗷嗷,谢谢楼主。我之前百度的都是屏幕坐标转格子下标,然后判断的,这个只能一格一格移动。找了好久都没找到自由移动的方法。听你这么一说,原来是自己再用collider再包装了一下啊,茅塞对开




