Flash box2d 2.1a版本的简单教程

项目需要,弄了下box2d.

柱状刚体:

/**
         *
         * @param p
         * @return
         *
         */        
        private function createAPillarShape(p:Point):b2PolygonShape
        {
            var px:int = p.x;
            var py:int = p.y;
            var b2shapeIns:b2PolygonShape = new b2PolygonShape();
            var vetors:Vector.<b2Vec2> = Vector.<b2Vec2>(
                [new b2Vec2(((px + 0) / PhysicVars.PIXEL_TO_METER),((py + 0) / PhysicVars.PIXEL_TO_METER)),
                new b2Vec2(((px + (_config.PILLAR_W1 >> 1)) / PhysicVars.PIXEL_TO_METER), ((py - _config.PILLAR_H2) / PhysicVars.PIXEL_TO_METER)),
                new b2Vec2(((px + _config.PILLAR_W1) / PhysicVars.PIXEL_TO_METER), ((py + 0) / PhysicVars.PIXEL_TO_METER)),
                new b2Vec2(((px + _config.PILLAR_W1) / PhysicVars.PIXEL_TO_METER), ((py + _config.PILLAR_H1) / PhysicVars.PIXEL_TO_METER)),
                new b2Vec2(((px + 0) / PhysicVars.PIXEL_TO_METER), ((py + _config.PILLAR_H1) / PhysicVars.PIXEL_TO_METER))]);
            b2shapeIns.SetAsVector(vetors, vetors.length);
            return b2shapeIns;
        }
        /**
         *create bottom shape
         * @param p
         * @return
         *
         */        
        private function createBottomShape(p:Point):b2PolygonShape
        {
            var px:int = p.x;
            var py:int = p.y;
            var b2polygonShapeIns:b2PolygonShape = new b2PolygonShape();
            var _local5:Vector.<b2Vec2> = Vector.<b2Vec2>([
                new b2Vec2(((px + 0) / PhysicVars.PIXEL_TO_METER), ((py + 0) / PhysicVars.PIXEL_TO_METER)),
                new b2Vec2(((px + _config.BOTTOM_W) / PhysicVars.PIXEL_TO_METER), ((py + 0) / PhysicVars.PIXEL_TO_METER)),
                new b2Vec2(((px + _config.BOTTOM_W) / PhysicVars.PIXEL_TO_METER), ((py + _config.BOTTOM_H) / PhysicVars.PIXEL_TO_METER)),
                new b2Vec2(((px + 0) / PhysicVars.PIXEL_TO_METER), ((py + _config.BOTTOM_H) / PhysicVars.PIXEL_TO_METER))]);
            b2polygonShapeIns.SetAsVector(_local5, _local5.length);
            return b2polygonShapeIns;
        }
        /**
         *create slots body
         * @param startPoint
         * @return
         *
         */        
        private function createBody(startPoint:Point):b2Body
        {
            var b2BodyIns:b2Body;
            var b2FixtureIns:b2FixtureDef;
            var b2PShapeIns:b2PolygonShape;
            var b2PShapeIns2:b2PolygonShape;
            var stX:int = startPoint.x;
            var stY:int = startPoint.y;
            var b2BodyDefIns:b2BodyDef = new b2BodyDef();
            b2BodyDefIns.position.Set((stX / PhysicVars.PIXEL_TO_METER), (stY / PhysicVars.PIXEL_TO_METER));
            b2BodyDefIns.type = b2Body.b2_staticBody;
            b2BodyIns = WorldManager.instance.world.CreateBody(b2BodyDefIns);
            var slotFixtureConfig:Object = PhysicVars.instance.slotFixture;
            var i:int;
            while (i < _config.NUM_PILLARS)
            {
                b2PShapeIns = createAPillarShape(new Point(((_config.PILLAR_SPACE + _config.PILLAR_W1) * i), 0));
                b2FixtureIns = new b2FixtureDef();
                b2FixtureIns.shape = b2PShapeIns;
                b2FixtureIns.density = slotFixtureConfig.density;
                b2FixtureIns.friction = slotFixtureConfig.friction;
                b2FixtureIns.restitution = slotFixtureConfig.restitution;
                b2BodyIns.CreateFixture(b2FixtureIns);
                i++;
            }
            b2PShapeIns2 = createBottomShape(new Point(0, _config.BOTTOM_SHIFT_Y));
            b2FixtureIns = new b2FixtureDef();
            b2FixtureIns.shape = b2PShapeIns2;
            b2FixtureIns.density = slotFixtureConfig.density;
            b2FixtureIns.friction = slotFixtureConfig.friction;
            b2FixtureIns.restitution = slotFixtureConfig.restitution;
            b2BodyIns.CreateFixture(b2FixtureIns);
            return b2BodyIns;
        }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值