代码生成碰撞体,整个node的active为false,而且修改无效。

newNode = new Node('placeholder')

        newNode.setParent(this.node)
        newNode.active = true
       
        newNode.addComponent(UITransform).setContentSize(this.carR * 2, this.carR * 2)
        let CircleCollider = newNode.addComponent(CircleCollider2D)
        CircleCollider.tag = 9
        CircleCollider.radius = this.carR
        CircleCollider.apply()
        newNode.addComponent(RigidBody2D).type = ERigidBody2DType.Static

        newNode.worldPosition = worldLocation

碰撞体怎么都无法被射线检测到,打印出来一看,new出来的node的active是false,即使设置为ture,也还是false……
image

又找到一个未抛出的异常

把node名称改掉就正常了!!!!
let newNode = new Node(‘placeholder111’)

而且我新建项目,用placeholder是可以的,见鬼了……

原因大概找到了,我在new 这个node前,对之前生成的挂在同一个父节点的相同名字的node进行了destroy。这可能是影响它的原因,至于为啥影响,有大佬知道吗?

把log的位置放到了刚new出来,设置了父节点之后,还是不行,new出来的节点还是错乱的。
有什么神秘力量能能让刚new出来的节点出错呢?

let newNode = new Node('placeholder')

        newNode.setParent(this.node)
        newNode.worldPosition = worldLocation
        
        newNode.addComponent(UITransform).setContentSize(this.carR * 2, this.carR * 2)

        // Add a rigidBody first!!!!!!!
        newNode.addComponent(RigidBody2D).type = ERigidBody2DType.Static
        newNode.getComponent(RigidBody2D).allowSleep = false

        //after added the rigidBody, add Collider
        let CircleCollider = newNode.addComponent(CircleCollider2D)
        CircleCollider.tag = 9
        CircleCollider.radius = this.carR
        CircleCollider.apply()

总的来说,先加刚体,再加碰撞体!

1赞