3.0正式版2D物理【绘制物理调试信息】不生效!

如题,创建了些2D物理节点,按照3.0的文档中设置,开启物理系统和绘制物理调试信息。
PhysicsSystem2D.instance.enable = true;
PhysicsSystem2D.instance.debugDrawFlags = EPhysics2DDrawFlags.Aabb |
EPhysics2DDrawFlags.Pair |
EPhysics2DDrawFlags.CenterOfMass |
EPhysics2DDrawFlags.Joint |
EPhysics2DDrawFlags.Shape;

按照文档如此设置,浏览器运行调试没有显示物理绘制信息,是还需要其它设置吗?

方便提供下demo看一下吗?

我找到绘制信息的节点,发现节点层级设置的是默认的DEFAULT,Canvas的Camera可见层级没有DEFAULT,我把绘制信息的节点层级修改成UI_2D就可以了。我觉得引擎内部创建PHYSICS_2D_DEBUG_DRAW节点的时候是否可以把layer设置为UI_2D,或者说设置成默认DEFAULT有别的用意,望解答,谢谢。

1赞

脚本创建的节点,由于会存在多Canvas,多Camera的情况,不确定是要怎么渲染,渲染在哪里,所以这个layer没有指定,需要自行来设置,毕竟需求多种多样,具体只能根据实际来设置,给你带来的不便,感到非常抱歉!!

PHYSICS_2D_DEBUG_DRAW节点有其它接口进行layer的设置吗?我上面通过节点树查找的方式只能是临时解决方案,这样的方案并不好,耦合,或者你们一高兴,下个版本又换个命名,节点就找不到了。

目前没有其他的设置方法,非常抱歉,另外方便将你之前有问题的工程整理个demo给我们吗?

不需要吧?问题就是PHYSICS_2D_DEBUG_DRAW节点layer默认是DEFAULT,Canvas的Camera默认不渲染DEFAULT层,界面上就没显示绘制的物理调试信息,我还以为调试信息没绘制出来。后面想想有没有可能是层级的问题,我就看相机的层级,问题就找到了。后续版本可否增加PhysicsSystem2D.instance.setDebugDrawLayer()来自定义调试信息的层级?或者有更好的方案也行,调试信息的层级肯定是要修改的,放在DEFAULT是不适用的。

给刚体一个速度 比抖音还会抖

我照着你的方法把PHYSICS_2D_DEBUG_DRAW节点的层级改成UI_2D了,相机的渲染层级也确定是UI_2D,然而还是看不到绘制的物理调试信息。

你在浏览器的控制台输入:cc.find(“Canvas”);
找下调试信息的节点,看是否存在和Node命名,如果存在,看其node属性layer是否设置正确,另外按照我上面截图的信息,需要先启动2d物理和配置绘制信息,设置layer需要延迟一帧,相机检查下主相机和UI相机的渲染层。

1赞

image
image
image

MainCamera的visibility是0,啥也不拍。

找到原因了。除了按你上面说的改层级的操作外,节点上还必须有刚体,只有碰撞体没有刚体也是绘制不出来的。
这几天试了下built-in物理引擎,Bug一堆,还是用box2D吧。

3.0的2d物理系统也是box2d,只是creator层改了,物理的内核还是不变的,不过要是商用,做2d物理游戏,我比较建议用2.4

该主题在最后一个回复创建后14天后自动关闭。不再允许新的回复。