私はlibgdxチュートリアルをいくつか見て、マップを作るためにcamとuse tileを使う方法を学びました。しかし私はいくつかのアイデアがほしいと思う少しの問題に会う。 RPGゲームを作りたいけど、場所などの各モンスターの情報を覚えておきたい。しかし地図は非常に大きいので、レンダリングの量を減らす必要があります。どのように多くのリソースを使用せずにカムの外のものを含む各モンスターの情報を保持することができますか?libgdx - カム外部のオブジェクトを扱う
答えて
あなたは既にlibGDXのTiledMap
で作業していたと思います。 the Ashley frameworkを見てみましょう、あなたのエンティティを管理するための
OrthogonalTiledMapRenderer renderer =
new OrthogonalTiledMapRenderer(myMap, 1/16f); // Change this to your render scale
//e.g. 1/32f means your tiles are 32px wide
OrthographicCamera camera = new OrthographicCamera(16, 9); //viewport size: 16x9
...
//Inside your class that implements Screen or extends Game
public void render(float delta) {
...
renderer.setView(camera);
renderer.render();
...
}
:あなたは、あなたがそれに渡すCamera
オブジェクトを使用するための画面の正しい部分をレンダリングするであろう、あなたのマップを描画するOrthogonalTiledMapRenderer
を使用することができます。すべてのエンティティにその位置が含まれているComponent
を渡し、描画システムを作成して描画することができます。
エンティティをTiledMapの一部ではないので、エンティティを自分で描画する必要がありますが、まずはsystem using Box2dDebugRenderer
の実装が役に立ちます。
あなたはBOX2Dを使用してないなら、ここでそれはEntitySystem
(テストされていない)を使用して、どのように見えるかの例です:
public class RenderingSystem extends IteratingSystem {
public static final Family MONSTERS = Family.all(BoxComponent.class).get();
//Assumes you've made a BoxComponent class
private ShapeRenderer shapes;
private Camera camera;
public RenderingSystem(Camera camera) {
super(MONSTERS);
this.camera = camera;
this.shapes = new ShapeRenderer();
}
@Override
public void update(float deltaTime) {
shapes.begin(ShapeType.Line);
shapes.setColor(Color.RED);
super.update(deltaTime);
shapes.end();
}
@Override
protected void processEntity(Entity entity, float deltaTime) {
Rectangle box = entity.getComponent(BoxComponent.class);
//^Could be done faster using ComponentMappers
shapes.rect(box.x, box.y, box.width, box.height);
}
}
情報をありがとう、しかし、私はashleyフレームワークを使用する方法を知らない...私はプログラミングに非常に新しいです。プロジェクトにライブラリを実装するにはどうすればよいですか? – sunmaggot
あなたのプロジェクトを構築するためにGradleを使用しますか?はいの場合は、これらの行([https://github.com/libgdx/ashley/wiki/Getting-started-with-Ashley#gradle])をグラデルファイルに追加して再構築するだけです。そうでない場合、libGDXはGradleを使用するので、Eclipseを使用する場合は[this](https://github.com/libgdx/libgdx/wiki/Gradle-and-Eclipse)を使用してIDE(Eclipse/IntelliJ)にインポートできますIntelliJを使用する場合は、[this](https://github.com/libgdx/libgdx/wiki/Gradle-and-Intellij-IDEA)をクリックします。 NetBeansセクション[here](https://github.com/libgdx/libgdx/wiki/Gradle-and-NetBeans)もあります。 – Moira
もちろん、Gradleに対処したくない場合は、プロジェクトを再生成するだけです([Ashley](http://i.imgur.com/BjUgEmn.png)を選択して、古いコードをすべてコピーしてくださいしかし、私は非常に有用であり、すべてが楽になるので、Gradleを使う方法を学ぶことを強くお勧めします:) – Moira
- 1. サービススタックがオブジェクトを内部的にどのように扱うか?
- 2. Django子テーブルの外部キーを扱う方法
- 3. Xamarinラッパー地獄 - 多くの外部依存関係を扱う
- 4. ISessionの外部で遅延ロードを扱う?
- 5. 多数のオブジェクトを扱う
- 6. 多くのオブジェクトを扱う
- 7. typescript 2.0で外部未定義変数を扱う方法
- 8. スカラ - ヌルJSONオブジェクトを扱う
- 9. 私のカムのヒストグラム
- 10. iReportと外部オブジェクト
- 11. Color Libgdx Rectangleオブジェクト
- 12. 外部HTMLオブジェクトのGoJs mouseDragEnter
- 13. 約束を持った外部インタフェースの引数を扱うためのデザインパターン
- 14. のHttpClientを集約例外を扱う
- 15. XCode Interface Builderのオブジェクトと外部オブジェクト
- 16. 複雑な不変のオブジェクトを扱う
- 17. オブジェクトのベクトルを扱う方法は?
- 18. 遅延オブジェクトの配列を扱う
- 19. 複数のオブジェクトを扱うGWTサービス
- 20. LibGdx私はこのような私のlibGdxプロジェクト内のオブジェクトの配列を作成したオブジェクト配列
- 21. のJavaスクリプトのWebカム
- 22. djangoクエリで外国文字を扱う
- 23. カム付きのEmguCV SURF?
- 24. ジャンゴ外部キーのオブジェクトをシリアル化
- 25. 外部APIオブジェクトを持つjavaのスレッドセーフ
- 26. outerHTMLをjQueryオブジェクトとして扱う
- 27. 大きなオブジェクトを扱うJavascriptビルドシステム
- 28. Javaで大きなMQオブジェクトを扱う
- 29. 外部APIからのオブジェクトのシリアル化
- 30. ジャンゴ外部キーのオブジェクトの管理カスタムオーダー
あなた大型マップについては、お使いのクリッピングと呼ばれる方法を使用する必要があります。情報を格納するために、位置、テクスチャ領域、および必要な情報など、必要な情報を含むJavaオブジェクトを作成します。 –