2D碰撞回调IPhysics2DContact参数为NULL

Creator 版本: 3.1.1

2D引擎:Box2D

onBeginContact
onEndContact
onPreSolve
onPostSolve

四个回调方法里参数selfCollider: Collider2D, otherCollider: Collider2D, contact: IPhysics2DContact | null
的IPhysics2DContact 为null,文档里也没IPhysics2DContact 相关内容,IPhysics2DContact 的超链接也是空的。
请问是哪里设置错了么?

找到问题了。

    // 注册单个碰撞体的回调函数
    let collider = this.getComponent(CircleCollider2D);
    if (collider) {
        collider.on(Contact2DType.BEGIN_CONTACT, this.onBeginContact, this);
        collider.on(Contact2DType.END_CONTACT, this.onEndContact, this);
        collider.on(Contact2DType.PRE_SOLVE, this.onPreSolve, this);
        collider.on(Contact2DType.POST_SOLVE, this.onPostSolve, this);
    }

    // 注册全局碰撞回调函数
     if (PhysicsSystem2D.instance) {
         PhysicsSystem2D.instance.on(Contact2DType.BEGIN_CONTACT, this.onBeginContact, this);
         PhysicsSystem2D.instance.on(Contact2DType.END_CONTACT, this.onEndContact, this);
         PhysicsSystem2D.instance.on(Contact2DType.PRE_SOLVE, this.onPreSolve, this);
         PhysicsSystem2D.instance.on(Contact2DType.POST_SOLVE, this.onPostSolve, this);
     }

原来用的是《注册全局碰撞回调函数》,改成《注册单个碰撞体的回调函数》就可以了。
另外,2D刚体的getLinearVelocityFromWorldPoint方法要有2个变量,param2是一个Vec2变量。
文档没有更新,代码工程里physics-samples里倒是有Sample project for physics

1赞

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