动态创建刚体的问题

在编辑器中创建NODE,设置刚体,设置物理碰撞体,代码开启debugDraw ,一切正常没有问题
删除NODE
改用代码创建
没有任何显示
请问是什么问题??

test.ts


const { ccclass, property } = cc._decorator;

@ccclass
export default class NewClass extends cc.Component {
start(): void {
let pm = cc.director.getPhysicsManager();
pm.enabled = true;
pm.debugDrawFlags = 7;

    // 上面方块
    let node_1 = new cc.Node();
    let ppc_1 = node_1.addComponent( cc.PhysicsPolygonCollider );
    ppc_1.points = [ cc.v2( -100, 50 ), cc.v2( 100, 50 ), cc.v2( 100, -50 ), cc.v2( -100, -50 ) ];
    let bd_1 = node_1.addComponent( cc.RigidBody );
    bd_1.type = cc.RigidBodyType.Dynamic;
    node_1.setPosition( cc.v2( 400, 600 ) );

    // 下方平板
    let node_2 = new cc.Node();
    let ppc_2 = node_2.addComponent( cc.PhysicsPolygonCollider );
    ppc_2.points = [ cc.v2( -400, 50 ), cc.v2( 400, 50 ), cc.v2( 100, -50 ), cc.v2( -100, -50 ) ];
    let bd_2 = node_2.addComponent( cc.RigidBody );
    bd_2.type = cc.RigidBodyType.Static;
    node_2.setPosition( cc.v2( 400, 100 ) );

    cc.director.getScene().addChild( node_1 );
    cc.director.getScene().addChild( node_2 );
}

}

:grin:一般不都是先加进去再设置坐标吗?加之前设置有没有效果?我没试过

对象实例化以后就可以设置位置了,

经查有2个坑
1.开启物理debugdraw 不能放到start里
必须放到onLoad里 原因不明

onLoad():void{
let pm = cc.director.getPhysicsManager();
pm.enabled = true;
pm.debugDrawFlags = 7;
}

2.在start里动态创建刚体,设置type后无效果
例如一个设置为2 动态 另一个设置为0 静态 但设置为0的那个依然会掉下来

设置完collider的offset size后要调用apply才起作用