tiledmap对象层的问题

  • Creator 版本:1.8.0

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

    编辑生成的tmx文件显示正常,如下图:


    但是在creator程序里再去获取就获取不到,使用如下api,

    输出如下:

    全部type都为零,不知道问题出在哪里?是tiledmap版本太低吗?

试试 console.log(obj) ,然后在浏览器log里展开输出的结果看看有没有哪个属性是你想要的数值。
自己做的时候 type 这个字段总是被其他属性覆盖……

这个我输出过,我还特意把一个type给改成了一串字母,输出里就找不到

改成别的字母会不解析的,你可以试试添加自定义属性

不要用这个type了

虽然设置麻烦点不过有效……:dizzy_face:

:joy::joy:我能想到的就是这个方法了,不过很好奇为什么类型这里解析不出来,是bug吗

引擎里的type字段有其他的含义,把地图的type字段给覆盖了,不知道是不是bug,还是有其他原因故意覆盖的

此外还发现定义在对象层下的自定义属性在模拟器运行时获取不到,浏览器下正常

自定义属性用 getProperty 获取试试,另外没有定义的属性名在模拟器下获取是当做错误处理的:cry:

楼主,怎么用tiledMap实现角色自由移动并且和格子发生碰撞的呢?
我只会走格子碰撞

用物理:
用代码对每个 Tile 被标记自定义属性为障碍的格子创建一个 PhysicsBoxCollider
或者用代码对对象层里每个被标记为障碍的对象创建 PhysicsBoxCollider
给角色添加 PhysicsCircleCollider

不用物理:
自己处理角色移动时的 xy 坐标变化,自己计算角色碰撞区域和 tile/对象层对象 的碰撞区域处理,比如可以简单的做方块aabb碰撞计算,可以用 cc.Intersection

2赞

嗷嗷,谢谢楼主。我之前百度的都是屏幕坐标转格子下标,然后判断的,这个只能一格一格移动。找了好久都没找到自由移动的方法。听你这么一说,原来是自己再用collider再包装了一下啊,茅塞对开