cocos2d-js]chipmunk例子(一)

前端之家收集整理的这篇文章主要介绍了cocos2d-js]chipmunk例子(一)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
@H_403_6@
initChipmunk:function() {
        @H_403_6@this@H_403_6@.space = new@H_403_6@ cp.Space();

        @H_403_6@this@H_403_6@.setupDebugNode();

        @H_403_6@//@H_403_6@设置空间内刚体间联系的迭代计算器个数和弹性关系迭代计算器个数.
        @H_403_6@chipmunk使用迭代计算器计算出空间内物体的受力关系.
        @H_403_6@它建立一个大列表存放物体间所有的碰撞,连接等相互影响关系.根据实际情况传递某些相互作用.
        @H_403_6@传递相互作用的数取决于迭代器的个数,每次迭代都使计算结果更精确.
        @H_403_6@如果进行了过多的迭代,虽然物理影响效果会更好,但是这也会消耗过多的cpu处理时间.
        @H_403_6@如果进行的迭代太少,物理模拟效果会不精确,或者使本该静止的物体没能静止下来.
        @H_403_6@使用迭代器的个数在于平衡cpu性能和物理模拟精确度之间权衡.@H_403_6@
        this@H_403_6@.space.iterations = 60@H_403_6@;
        @H_403_6@设置空间的重力向量@H_403_6@
        this@H_403_6@.space.gravity = cp.v(0@H_403_6@,-500@H_403_6@);
        @H_403_6@ 休眠临界时间@H_403_6@
        this@H_403_6@.space.sleepTimeThreshold = 0.5@H_403_6@;
        @H_403_6@this@H_403_6@.space.collisionSlop = 0.5@H_403_6@;



        @H_403_6@this@H_403_6@.addFloor();
        @H_403_6@this@H_403_6@.addWalls();

        @H_403_6@var@H_403_6@ width = 50@H_403_6@;
        @H_403_6@var@H_403_6@ height = var@H_403_6@ mass = width * height * 1@H_403_6@/1000@H_403_6@;
        @H_403_6@var@H_403_6@ rock = this@H_403_6@.space.addBody(new@H_403_6@ cp.Body(mass,cp.momentForBox(mass,width,height)));
        rock.setPos(cp.v(@H_403_6@500@H_403_6@,100@H_403_6@));
        rock.setAngle(@H_403_6@1@H_403_6@);
        @H_403_6@var@H_403_6@ shape = this@H_403_6@.space.addShape(new@H_403_6@ cp.BoxShape(rock,height));
        shape.setFriction(@H_403_6@0.3@H_403_6@);
        shape.setElasticity(@H_403_6@0.3@H_403_6@);


            @H_403_6@var@H_403_6@ radius = 20@H_403_6@;
            mass @H_403_6@= 3@H_403_6@;
            @H_403_6@var@H_403_6@ body = new@H_403_6@ cp.Body(mass,cp.momentForCircle(mass,radius,cp.v(0@H_403_6@))));
            body.setPos(cp.v(@H_403_6@200@H_403_6@,(2@H_403_6@ * radius + 5@H_403_6@)));
            @H_403_6@var@H_403_6@ circle = new@H_403_6@ cp.CircleShape(body,128); line-height:1.5!important">0@H_403_6@)));

            circle.setElasticity(@H_403_6@0.8@H_403_6@);
            circle.setFriction(@H_403_6@1@H_403_6@);



        @H_403_6@var@H_403_6@ ramp = new@H_403_6@ cp.SegmentShape(this@H_403_6@.space.staticBody,128); line-height:1.5!important">100@H_403_6@,128); line-height:1.5!important">100@H_403_6@),128); line-height:1.5!important">300@H_403_6@,128); line-height:1.5!important">200@H_403_6@),128); line-height:1.5!important">10@H_403_6@));
        ramp.setElasticity(@H_403_6@1@H_403_6@);  弹性@H_403_6@
        ramp.setFriction( 摩擦@H_403_6@
        ramp.setLayers(NOT_GRABABLE_MASK);

        @H_403_6@var@H_403_6@ sprite = this@H_403_6@.createPhysicsSprite(cc.p(400@H_403_6@,128); line-height:1.5!important">200@H_403_6@));
        @H_403_6@this@H_403_6@.addChild(sprite);
    },addFloor:function() {
        @H_403_6@var@H_403_6@ floor = 0@H_403_6@),128); line-height:1.5!important">640@H_403_6@,128); line-height:1.5!important">0@H_403_6@));
        floor.setElasticity(@H_403_6@1@H_403_6@);
        floor.setFriction(@H_403_6@1@H_403_6@);
        floor.setLayers(NOT_GRABABLE_MASK);
    },addWalls:function() {
        @H_403_6@var@H_403_6@ wall1 = 480@H_403_6@),128); line-height:1.5!important">0@H_403_6@));
        wall1.setElasticity(@H_403_6@1@H_403_6@);
        wall1.setFriction(@H_403_6@1@H_403_6@);
        wall1.setLayers(NOT_GRABABLE_MASK);

        @H_403_6@var@H_403_6@ wall2 = 0@H_403_6@));
        wall2.setElasticity(@H_403_6@1@H_403_6@);
        wall2.setFriction(@H_403_6@1@H_403_6@);
        wall2.setLayers(NOT_GRABABLE_MASK);
    },createPhysicsSprite:function( pos ) {
        @H_403_6@new@H_403_6@ cp.Body(1@H_403_6@,cp.momentForBox(48@H_403_6@,128); line-height:1.5!important">108@H_403_6@) );
        body.setPos( pos );
        @H_403_6@this@H_403_6@.space.addBody( body );
        @H_403_6@new@H_403_6@ cp.BoxShape( body,128); line-height:1.5!important">108@H_403_6@);
        shape.setElasticity( @H_403_6@0.5@H_403_6@ );
        shape.setFriction( @H_403_6@0.5@H_403_6@ );
        @H_403_6@this@H_403_6@.space.addShape( shape );

        @H_403_6@var@H_403_6@ sprite = cc.PhysicsSprite.create(res.b_ball_01);
        sprite.setBody( body );
        @H_403_6@return@H_403_6@ sprite;
    }@H_403_6@

猜你在找的Cocos2d-x相关文章