2016-04-05 9 views
0

ビューポートが役に立たないようですが、私はおそらく何かを失っています。Libgdxビューポート

たとえば、私はオブジェクトを持っているゲームを作っていました。画面の左端または右端に当たったら、私は死ぬでしょう!だから私がGdx.graphis.getWidth()と0を使用した場合、すべて正常に動作します。

OK、ただし、ビューポート=新しいExtendViewport(500,800、カメラ)を設定してみましょう。 クール私は500と800の仮想ピクセルを持っていない===> 5:8 次に、終了画面を押すロジックを入力します。オブジェクトx <またはobject.x> 800 ---->オブジェクトDIES !

しかし、1500 x 2000 ===> 3:4の解像度を持つタブレットでゲームを開始すると、すべてが間違っていて、画面全体が左に移動するので、0はまだ動作しますが、800は右端の端ではありません。

次に、FitViewportを使用して、左右のエッジの衝突が異なるアスペクト比のために移動されるようになりました。

私はstrechViewportを使うことができるか、手作業でコードを書くことができるようです...しかし、私は何かが欠けていることを知っています。なぜなら、ITはその使用法を持っていなければならないからです。

助けていただければ幸いです!

+0

あなたのしたいことから判断すると、あなたのビューポートの最大限度を設定すると助けになると思いますか? api https://libgdx.badlogicgames.com/nightlies/docs/api/com/badlogic/gdx/utils/viewport/ExtendViewport.html#ExtendViewport-float-float-float-float-を参照してください。ビューポートのサイズ – Fish

+0

よく設定しますか?私は最大に達することさえできません...今は私のゲームは違っていますが...私はGdx.graphics.getWidthとgetHeight()を使って古いファッションのやり方でPlayStateをプログラムします。オプションと私はViewPortsで行うもの、それは唯一の解決策のように思われる – pigi

答えて

0

まず、私の意見では、(0、0)座標でカメラを中心に置くのが良い習慣です。その後、画面の端の位置は常に-screenWidth/2、右側はscreenWidth/2になります。

第2に、ビューポートを使用するときに画面の座標を直接使用しないでください。それは、これらは関係なく、大きなディスプレイがものになるかどうかの座標は常に同じ型を維持しないためにあなたができるようになります後方の方法にも

project(Vector2 worldCoords) 

を持って

unproject(Vector2 screenCoords) 

Viewportは、画面ののビューポート座標を変換するための方法があります。

+0

プロジェクションはタッチイベントのために有用かどうか?そしてアスペクト比が変わると、私はExtendViewportを使って電話全体を通して背景を持っていましたが、実際のプレイ可能な画面の部分は、左と右端から離れています。 0と500の代わりに50と550を使用すると、aspect_ratioですべてを掛けることができますが、ViewPortsを使用することも役に立たないようです。私はここで何が欠けていますか?私のコードをチェックして、私がここで紛失しているものを教えてください:http://pastebin.com/UY0BzBNp、SQUAREクラスにはスプライトとヒットボックスしかありません – pigi

関連する問題