4

Box2d および Box2d Lights を使用した libgdx ゲームを開発中です。

私の質問は、Bodys / Bodydefs が Box2d Light からの光源を無視し、影を落とさないようにするにはどうすればよいですか?

ありがとう。

  PolygonShape groundBox = new PolygonShape();
  groundBox.setAsBox(2f, 2f);

  FixtureDef gridBox = new FixtureDef();
  gridBox.shape = groundBox;
  gridBox.density = 1.0f;

  gridBox.filter.groupIndex = GRID_GROUP;
  gridBox.filter.categoryBits = GRID_CAT;
  gridBox.filter.maskBits = GRID_MASK;

  bodyDefs[i][j] = new BodyDef();       
  bodyDefs[i][j].position.set(j*factor + factor, i*factor + factor);
  bodyDefs[i][j].fixedRotation = true;
  bodyDefs[i][j].type = BodyDef.BodyType.DynamicBody;

  bodies[i][j] = world.createBody(bodyDefs[i][j]);
  bodies[i][j].createFixture(gridBox);

  handler = new RayHandler(world);
  handler.setCombinedMatrix(camera.combined);
  Filter filter = new Filter();
  filter.groupIndex = GRID_GROUP; // GRID_GROUP = 1
  filter.categoryBits = GRID_CAT; // GRID_CAT = 0x0001;
  filter.maskBits = GRID_MASK;    // GRID_MASK = 1;

  new PointLight(handler, 1000, Color.RED, 2000, 0, height);

  PointLight.setContactFilter(filter);
4

2 に答える 2

0

コンタクト フィルターは、Box2D Lights を使用してすべてのライトにのみ適用できると思います。aug13 が参照している setContactFilter メソッドを使って設定しようとしたのですが、それは Light から継承された静的メソッドであり、オブジェクトから呼び出すことはできません。過去のある時点で可能だったかどうかはわかりません。

ドキュメントから:

public static void setContactFilter(short categoryBits,
                    short groupIndex,
                    short maskBits)

指定されたパラメータですべてのライトの新しい連絡先フィルタを作成します

于 2014-05-17T03:19:55.447 に答える