Android AndEngine和Box2D中的弹簧墙

Android AndEngine和Box2D中的弹簧墙,android,box2d,andengine,Android,Box2d,Andengine,我在游戏中使用Box2D,但我希望有一个外观美观的弹簧墙,以便在触摸时推动玩家。它看起来像这样(在3帧中): 问题:如何实施?我可以将墙效果附加到动画精灵吗 答案是:棱柱关节。我将图像分为两部分:静态和动态(移动条)。下面的代码用于在方向上创建棱柱关节,如我问题中的图像所示: //prismatic joint final Sprite springFrameT = new Sprite(pX, pY, mSpringFrameTRegion, getVertexBufferObjec

我在游戏中使用Box2D,但我希望有一个外观美观的弹簧墙,以便在触摸时推动玩家。它看起来像这样(在3帧中):


问题:如何实施?我可以将墙效果附加到动画精灵吗

答案是:棱柱关节。我将图像分为两部分:静态和动态(移动条)。下面的代码用于在方向上创建棱柱关节,如我问题中的图像所示:

//prismatic joint
    final Sprite springFrameT = new Sprite(pX, pY, mSpringFrameTRegion, getVertexBufferObjectManager());
    final Sprite springBarT = new Sprite(pX, pY + mSpringFrameTRegion.getHeight()-mSpringBarTRegion.getHeight(), 
            mSpringBarTRegion, getVertexBufferObjectManager());        
    mMainScene.attachChild(springFrameT);
    mMainScene.attachChild(springBarT);        
    mMapSprites.add(springFrameT);
    mMapSprites.add(springBarT);

    final Body springFrameBody = PhysicsFactory.createBoxBody(mPhysicsWorld, springFrameT, BodyType.StaticBody, FIXTURE_DEF);
    final Body springBarBody = PhysicsFactory.createBoxBody(mPhysicsWorld, springBarT, BodyType.DynamicBody, SPRING_FIXTURE_DEF);        
    mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(springFrameT, springFrameBody, false, false));
    mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(springBarT, springBarBody, true, true));

    final PrismaticJointDef prismaticJointDef = new PrismaticJointDef();        
    prismaticJointDef.initialize(springFrameBody, springBarBody, springFrameBody.getWorldCenter(), // new Vector2(springFrameT.getWidth(), springFrameT.getHeight()/2), 
            new Vector2(0, 1.0f)); 
    prismaticJointDef.lowerTranslation = -0.5f;
    prismaticJointDef.upperTranslation = 0.5f;
    prismaticJointDef.enableLimit = true;
    prismaticJointDef.enableMotor = true;
    prismaticJointDef.maxMotorForce = 100.0f;
    prismaticJointDef.motorSpeed = 100000f;
    prismaticJointDef.collideConnected = false;
    this.mPhysicsWorld.createJoint(prismaticJointDef);         

答案是:棱柱关节。我将图像分为两部分:静态和动态(移动条)。下面的代码用于在方向上创建棱柱关节,如我问题中的图像所示:

//prismatic joint
    final Sprite springFrameT = new Sprite(pX, pY, mSpringFrameTRegion, getVertexBufferObjectManager());
    final Sprite springBarT = new Sprite(pX, pY + mSpringFrameTRegion.getHeight()-mSpringBarTRegion.getHeight(), 
            mSpringBarTRegion, getVertexBufferObjectManager());        
    mMainScene.attachChild(springFrameT);
    mMainScene.attachChild(springBarT);        
    mMapSprites.add(springFrameT);
    mMapSprites.add(springBarT);

    final Body springFrameBody = PhysicsFactory.createBoxBody(mPhysicsWorld, springFrameT, BodyType.StaticBody, FIXTURE_DEF);
    final Body springBarBody = PhysicsFactory.createBoxBody(mPhysicsWorld, springBarT, BodyType.DynamicBody, SPRING_FIXTURE_DEF);        
    mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(springFrameT, springFrameBody, false, false));
    mPhysicsWorld.registerPhysicsConnector(new PhysicsConnector(springBarT, springBarBody, true, true));

    final PrismaticJointDef prismaticJointDef = new PrismaticJointDef();        
    prismaticJointDef.initialize(springFrameBody, springBarBody, springFrameBody.getWorldCenter(), // new Vector2(springFrameT.getWidth(), springFrameT.getHeight()/2), 
            new Vector2(0, 1.0f)); 
    prismaticJointDef.lowerTranslation = -0.5f;
    prismaticJointDef.upperTranslation = 0.5f;
    prismaticJointDef.enableLimit = true;
    prismaticJointDef.enableMotor = true;
    prismaticJointDef.maxMotorForce = 100.0f;
    prismaticJointDef.motorSpeed = 100000f;
    prismaticJointDef.collideConnected = false;
    this.mPhysicsWorld.createJoint(prismaticJointDef);