0

デスクトップでスペースバーボタンを押すと、回転ジョイントを介してボディコネクトを回転させようとしています。ここに私の作成方法があります

            ballBody =createBall();//first body to the joint
            rectBody=createRect();//second body to the joint

            revoluteJointDef = new RevoluteJointDef();
            revoluteJointDef.initialize(ballBody,rectBody,new Vector2(0,0));
            revoluteJointDef.lowerAngle=0;
            revoluteJointDef.upperAngle=0.785f;
            revoluteJointDef.localAnchorA.set(2,0);
            revoluteJointDef.localAnchorB.set(0,6);
            revoluteJointDef.collideConnected=false;

            revoluteJointDef.lowerAngle=-0.734f;
            revoluteJointDef.upperAngle=0.735f;
            revoluteJointDef.maxMotorTorque=100f;
            revoluteJointDef.motorSpeed=-12.6f;
            revoluteJointDef.referenceAngle=0f;
            revoluteJointDef.enableLimit=true;
            joint = world.createJoint(revoluteJointDef);

このようにスペースバーボタンを押した後、モーターを有効にしています

  public boolean keyDown(int keycode) {
        if(keycode== Input.Keys.SPACE) {
                   hit();  // call to hit function
        }

ヒット機能はこちら

  private void hit(){
        revoluteJointDef.enableMotor=true;
        }

私のレンダリング方法はこのようなものです

 public void render(float delta) {
        Gdx.gl.glClearColor(0.5f, 0, 0, 1);
        Gdx.gl.glClear(GL20.GL_COLOR_BUFFER_BIT);
        game.batch.setProjectionMatrix(camera.combined);
        world.step(1f/60f, 6, 2);
        debugRenderer.render(world, camera.combined);
        game.batch.begin();
         game.batch.end();
    }

何か提案があれば助けてください。

4

1 に答える 1

1

Createメソッドの最後の行に間違いが見つかりました

revoluteJoint=(RevoluteJoint)world.createjoint(revolutejointDef);

ヒット メソッドまたは create メソッド以外では、revolutejointDef の代わりに revolutejoint を使用します。

revoluteJoint.enableMotor=true;
于 2016-09-11T09:23:47.527 に答える