动态添加物理组件,碰撞范围变大,包围盒设置无效

onLoad () {

    cc.director.getPhysicsManager().enabled = true;

}

start () {
let rectNode = cc.instantiate(this.rect);//实例化预制体

    rectNode.setParent(this.node);//给预制体设置父节点

    rectNode.x = 360;

    rectNode.y = 640;

    let rigidbody = rectNode.addComponent(cc.RigidBody);//添加刚体组件

    let collider = rigidbody.addComponent(cc.PhysicsBoxCollider);//添加物理组件
    rigidbody.type = 1;
    collider.size = cc.size(20, 20);
}
  • Creator 版本: v2.4.2

  • 目标平台: chrome

这个问题困扰我很多天了,哪位大哥能帮忙解决一下

使用PhysicsBoxCollider. apply 让包围生效

木有用
let rectNode = cc.instantiate(this.rect);//实例化预制体
rectNode.setParent(this.node);//给预制体设置父节点
rectNode.x = 360;
rectNode.y = 640;
let rigidbody = rectNode.addComponent(cc.RigidBody);//添加刚体组件
let collider = rigidbody.addComponent(cc.PhysicsBoxCollider);//添加物理组件
collider.apply();//加了不起作用。是不是我哪里没弄对
rigidbody.type = 1;
collider.size = cc.size(20, 20);

const {ccclass, property} = cc._decorator;

@ccclass

export default class MPhysicsBoxCollider extends cc.PhysicsBoxCollider {

_mwidth = 20;

_mheight = 20;

_createShape(scale ) {

    var scaleX = Math.abs(scale.x);

    var scaleY = Math.abs(scale.y);

    var width = this._mwidth/2/32 * scaleX;

    var height = this._mheight/2/32 * scaleY;

    var offsetX = this.offset.x/32 *scaleX;

    var offsetY = this.offset.y/32 *scaleY;

    var shape = new b2.PolygonShape();

    shape.SetAsBox(width, height, new b2.Vec2(offsetX, offsetY), 0);

    return shape;

}

}

用这个自定义组件

谢谢!!!!!!我研究下

var shape = new b2.PolygonShape();
这句我不大明白,能解释下吗? :pray: :pray: :pray: :pray: :pray: :pray:
没有这个类啊

这个是box2d 创建一个多边形。

虽然api 看不到,但是可以用,cocos 集成了box2d