LibGDX を使い始めたばかりで、すでにカメラの問題に直面しています。
私がよく理解していれば、LibGDXを使用する2Dゲームでは、すべてのエンティティ(画面上のすべてを意味します)の位置を再計算する必要があることをインターネットでいくつか見ました。速度などのパラメータを取ります...
私にとってそれは、カメラが動くのではなく、カメラが映し出す世界を意味します。私は反対のことをしたいのですが、カメラを動かして世界を動かしたくはありません. ですから、世界が動いてカメラが変化を見せるのではなく、カメラが動いて変化を見せたいのです。したがって、一部のエンティティが動かなくても (x 座標と y 座標が変わらない)、カメラが動いているように見えます。
だから私はCamera
から継承するクラスとクラスOrthographicalCamera
を持っていEntity
ます。また、2 つのインターフェイスPositionListener
& PositionListenable
=> パターン オブザーバーもあります。
だから私が
やろうとしたことは: x と y でエンティティを追跡します。
Camera.java のコードは次のとおりです。
public class Camera extends OrthographicCamera implements PositionListener {
public Camera(float width, float height) {
super(width, height);
}
@Override
public void entityMoved(float newX, float newY) {
translate(newX - position.x, newY - position.y);
update();
Gdx.app.log("entityMoved()", "newX=" + newX + " - newY=" + newY);
Gdx.app.log("entityMoved()", "position.x=" + position.x + " - position.y=" + position.y);
}
}
position.x
ログを読むと、エンティティを追跡するために期待どおりに変更されたことがわかりますposition.y
が、視覚的にはカメラが動かないのですか?? 私のカメラが翻訳されていないかのように、すべてが同じように見えます!
My camera is not moving at all, only my entity !
What am I missing ? I read something about "viewPort" but really didn't get the thing as I am a beginner with LibGDX.