物理引擎的赛车撞人游戏(二) 地图添加刚体

地图画好了之后,它只是一根线,还要给它加上刚体,勾好分组,才能让车在上边跑。

动态添加刚体的脚本。

cc.Class({

    extends: cc.PhysicsCollider,

    mixins: [cc.Collider.Polygon],

    properties: {

        lineWidth: 5,

    },

    editor: {

        requireComponent: cc.RigidBody

    },

    _createShape: function (scale) {

        var shapes = [];

        var polys = this.points;

        var offset = this.offset;

        for (var i = 0; i < polys.length - 1; i++) {

            var posBegin = polys[i];

            var posEnd = polys[i+1];

            var linelen = posBegin.sub(posEnd).mag();

            var angle = Math.atan2(posEnd.y - posBegin.y, posEnd.x - posBegin.x) - Math.PI / 2;

            var midPos = posBegin.add(posEnd).mul(0.5);

            var shape = new b2.PolygonShape();

            if (shape) {

                shape.SetAsBox(this.lineWidth / 2 / 32, linelen / 2 / 32, new b2.Vec2(midPos.x / 32, midPos.y / 32), angle);

                shapes.push(shape);

            }

        }

        this.friction =1

        this.density = 1;

        return shapes;

    }

});

 

将上边的脚本挂载在划线后节点上(self.gra),设置好分组,就可以让车平稳的落在你画的地图上了。

        self.line = self.gra.addComponent("Line");

        self.line.lineWidth = self.path.lineWidth;

        self.line.points = self._posArrar;  //这里的点数组使用的是上一篇文章划线时存的点

        self.line.getComponent(cc.RigidBody).type = cc.RigidBodyType.Static;

        self.line.apply();

        self.gra.group = "ground";

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值