2016-08-25 5 views
-1

ここが私の言いたいことです。小さなウィンドウで:プレーヤーのウィンドウサイズを取得するには、サイズに応じて位置を変更しますか?

On a small window

プレーヤーの位置別名宇宙船は底部近く、完璧です。しかし、私はフルスクリーンに行く場合:プレイヤーの

in fullscreen

位置が真ん中にあります。どのようにしてそれを作ると、いつも底の近くにいるのですか?これは他の画面サイズでどのように機能しますか?

+0

また、この質問をするのが適切でない場合は、ごめんなさい、私は混乱しています – fnTASY

+0

現在、プレーヤーの位置を設定するためにどのようなコードを使用していますか? – chris

+1

@chrisもし私が正しく説明していればidkですが、コードはここにあります。私はlove2の新人ですのでチュートリアルです。チュートリアルのGithub:https://github.com/charles-l/gamedev_tutorial/blob/cd76f87db40fa3a802ccdf283c39745d1de1d19e/invaders.love/main.lua – fnTASY

答えて

0

だから、あなたのコードでは、プレイヤーのy位置が一定量に設定されています:

player.y = 550 

これは、画面の境界線の上から550pxになります。

「フルスクリーン」のスクリーンショットでは、使用しているピクセルの数が増えているだけです。 550pxはまだウィンドウの上部に比べて同じ量ですが、その下に余分なスペースがあります。

さまざまな画面サイズに合わせてゲームをデザインする場合は、スケールをどのように処理するかを決める必要があります。

player.y = love.window.getHeight() - 100 

https://love2d.org/wiki/love.window

How would this work with other screen sizes?

How would I make it so it's always near the bottom?

次のような画面の上記ピクセルの特定の数にプレイヤーを固定するウィンドウの高さを確認することができウィンドウ内の利用可能なピクセル数に応じて、多かれ少なかれ空き領域を広げようとしています。アセットの配置にはいくつかのオプションがあり、どちらを選択するかは、ウィンドウのサイズが変わったときに自分の望む結果に依存することになります。

たとえば、ゲームの世界をより多く表示するために、3つのモニタ設定を使用できるようにすることができます。または、すべての座標を「固定」にし、ウィンドウのサイズに応じてグラフィックをscaleにしたい場合があります。

+0

ありがとう、私はplayer.y = love.window.getHeight() - 100を試してみましたが、私は得るエラー: 'getHeight'フィールドを呼び出そうとしました – fnTASY

+0

私はあなたが愛のバージョン0.10.0+を使用していると思いますか?このAPIが変更されたという[パッチノート](https://love2d.org/wiki/0.10.0)があります。 'love.graphics.getHeight()'の代わりに 'love.graphics.getHeight()'を使ってみてください([here](https://love2d.org/wiki/love.graphics.getHeight))。 – chris

+0

ありがとう、私はそれを試して、それはちょっと動作しますが、ちょうど表示されない小さなウィンドウのサイズで? – fnTASY

0

すでに述べたように、画面のサイズによって、表示されるピクセルの量が異なります。したがって、画面の実際の高さをピクセル単位で取得するにはlove.graphics.getHeight()を使用してください。

次に、画面サイズに関係なく常にオブジェクトが同じ場所にあることを確認します。スクリーンの実際の高さからいくつかのピクセルを減算すると、これを実現できます(getHeight()から知られています)。このような何か:

screenHeight = love.graphics.getHeight() 
objectPositionY = screenHeight - 100 
objectHeight = 10 

しかし、あなただけの「小さい」ウィンドウ上で、上記のコメントの一つにオブジェクトがまったく表示されませなりますサイズに述べたように。つまり、screenHeightが100ピクセルよりも小さい場合は、オブジェクトが表示画面の上/外に表示されます。

screenHeight = love.graphics.getHeight() 
objectPositionY = screenHeight * 0.9 
objectHeight = screenHeight * 0.05 
は、 0は、オブジェクトが常にscreenHeightに応じて、同じ場所に言います。この方法でトップであると

:あなたは本当にこのような小さなウィンドウを使用してゲームを作成したい場合しかし、あなたはこのような何かを試すことができます1は画面の一番下にあります。もちろん、screenWidthでも同じことができます。

全体的には、最小限のサイズを有用なものに制限する必要があります。

そして、完全性のために、highDPIを使用して複数のプラットフォーム(特にAndroid)用のゲームを作成する場合は、love.window.getPixelScaleも考慮する必要があります。

関連する問題