自己做的一个儿童学图形游戏。如图,场景1和场景2同属于一个应用,在主界面分别由两个按钮进入。在测试的时候,直接从场景1测试或者从主界面测试再进入场景1,都没有问题。但是,无论在如何情况下,只要进入过一次场景2,只要一次,只要一次(说三遍),那么再退回主界面然后点击按钮进入场景1,场景1中的四个图形上搭载的不规则碰撞组件PolygonCollider上的白色虚线就会显现,而且有的虚线区域还会拖得很长(不过点击并没有反应,只是显示很长)。场景2随便切换都不会出问题。
说明:切换场景用的都是cc.director.loadscene(),场景1中的四个图形都是每次用预制体重新生成的(通过判断类型改变图案和重新赋值碰撞区域的points,碰撞点都是提前计算好的)。场景2中的七个图案是固定的节点,不用重新生成,都有挂载了PolygonCollider在上面。
两个场景没有任何交集的,切换场景会使其中一个场景出现问题,个人感觉这貌似不仅仅PolygonCollider的问题啊。碰撞区域点击没有bug,打印出来的坐标也没有问题,现在只求隐藏白色虚线的方法,就是让它无论如何也不要出现。
上面排版不好,这里重新打一次,场景1和场景2同属于一个应用,在主界面分别由两个按钮进入。在测试的时候,直接从场景1测试或者从主界面测试再进入场景1,都没有问题。但是,无论在如何情况下,只要进入过一次场景2,只要一次,只要一次(说三遍),那么再退回主界面然后点击按钮进入场景1,场景1中的四个图形上搭载的不规则碰撞组件PolygonCollider上的白色虚线就会显现,而且有的虚线区域还会拖得很长(不过点击并没有反应,只是显示很长)。场景2随便切换都不会出问题。
说明:切换场景用的都是cc.director.loadscene(),场景1中的四个图形都是每次用预制体重新生成的(通过判断类型改变图案和重新赋值碰撞区域的points,碰撞点都是提前计算好的)。场景2中的七个图案是固定的节点,不用重新生成,都有挂载了PolygonCollider在上面。
两个场景没有任何交集的,切换场景会使其中一个场景出现问题,个人感觉这貌似不仅仅PolygonCollider的问题啊。碰撞区域点击没有bug,打印出来的坐标也没有问题,现在只求隐藏白色虚线的方法,就是让它无论如何也不要出现。
题外话:场景1中图案的不规则碰撞点的世界坐标collider.world.points不能正确显示,显示的数值和collider.points一模一样,我是自己写了个方法传入collider.points来将其转换为世界坐标,才能正确判断的。
你的动态修改的 points 数量有变么,你修改的代码是怎么样的呢
修改代码如上,points数量是变化的,每次都会清空数组。问题是单独使用场景1的时候多次动态修改都没有问题,只要进入过场景2再退出来进入场景1就出问题。1.4版本的,模拟器和浏览器调试都出现这个bug
collider 本身还不支持动态修改的 points
不过你在最后加上这句试试
this.collider.world.points = this.collider.points.slice(0, this.collider.points.length);

嗯,谢谢,加入那句话之后修复了世界坐标点的打印显示,之前可能就是因为世界坐标的显示不正确才会导致有些图形的虚线被拉长到场景的边界的。现在白色虚线不会被拉长了,但仔细看上图还是能看到图案边缘的白色虚线的(除非我把points里面的点数量增加到很多很多个,比如200个,那样的话看到的就是光滑的白色实线,其实还是没能隐藏的,而且场景2中的7个图案我是没有动态修改的,周围也有白色线。总而言之最大的困惑就是不能隐藏这些白色的东西)。
不想显示的话应该把 debug draw 关掉
cc.director.getCollisionManager().enabledDebugDraw = false;
灰常感谢,显示正常了
解决了这点,以后做触摸控制应该可以避免很多问题了




