cc_PolygonCollider.world.points属性有时无法获取

  • Creator 版本:

  • 目标平台:

  • 详细报错信息,包含调用堆栈:

  • 重现方式:

  • 之前哪个版本是正常的 :

  • 手机型号 :

  • 手机浏览器 :

  • 编辑器操作系统 :

  • 编辑器之前是否有其它报错 :

  • 出现概率:

  • 额外线索:

来大佬啊,打印出来的polygonCollider组件信息展开后可以看到world属性,但是直接打印world属性却显示undifine,一查api文档,发现没有world属性了,请问是被吃掉了吗

这里打印有world属性,直接访问却显示undifine

你怎么直接访问的,代码贴一下看看

console.log(this.good.getChildByName(“frame0”).getComponent(cc.PolygonCollider).world.points)我的目标是获取这个,结果打印为undifine

console.log(this.good.getChildByName(“frame0”).getComponent(cc.PolygonCollider).world)
然后就试了一下这个,打印结果undifine

console.log(this.good.getChildByName(“frame0”).getComponent(cc.PolygonCollider))接着试了下这个,打印出一个collder组件,点击三角号展开可以看到world属性,如上图所示,很奇怪。

cc.director.getCollisionManager().enabled = true;这个已经开启了,写在上述代码前面

你在哪里打印的,是碰撞时打印么,这个world属性是实时计算出来的

我并不需要碰撞,我只是想做个判断区域,上面的代码都是在onLoad时执行的,我想在onLoad时储存世界坐标points数组而已。我的需求中,这里的不规则组件的位置是由始至终不会改变的,而且说白了我只是想要这些点来进行其他判断,结果就是获取不到。
即使world是实时计算的,但它应该有个初始值吧,我要的就是这个初始值。
如果直接访问外面那个points,获取的是节点坐标而不是世界坐标。

没有那个初始值的,你不碰撞它就是undefined,只有碰撞时它才会计算,world才会有值

怎么个碰法啊,我这不是物理组件那个,只是一个不规则组件PolygonCollider啊,与物理没有任何关系的,不需要碰撞的,我刚刚打开以前做好的工程都没有问题,一样的代码。就是新建的工程有问题,刚刚下载了个1.8.2写了个简单的demo,没有任何改动的空白工程。也请团队的大佬来看看吧。
colliderTest.zip (205.2 KB)

是的,就是你说的这个组件,以前不需要发生碰撞的,我用了很久了。我从来不知道要怎么碰撞啊,就算要碰撞,请问是什么样的碰撞方式?而且同样的creator版本,我打开以前的工程,都没有问题。这个真的很奇怪。

你换到start里面就有值了,你是对的,不用碰撞也行,这个属性是运行时才实时计算出来的,不是碰撞时实时计算出来的,我搞错了

嗯,谢谢大佬,这都让你想出来了。我刚刚设了一个定时器延迟了万分之一秒执行这段代码也解决了,其实我试过延迟10^-200秒执行也可以(小数点后面200个零,不可思议,远超普朗克时间的尺度,我无法想象),感觉是一些比较底层的原因。比如涉及到计算机处理问题的最小时间单位(还是无法想象,计算机怎么可能触摸到超过普朗克时间尺度范围),或者是引擎的底层代码的某个设定。

感觉比一秒钟穿越整个宇宙还要扯,这可是上帝的禁区啊,所以,这个定时器的底层代码肯定也有点问题,团队大佬来看看觉得我说的有没有道理