ピクセルアートを使用するゲームをGame Maker Studioで作成しています。ゲームを起動すると、すべての拡大されたテクスチャが本当にぼやけています。(小さなものには起こりません。)
たとえば、この画像
このようにゲームでレンダリングします:
とにかく、ぼやけたピクセルの代わりに小さなピクセルを大きなピクセルにサイズ変更することはありますか?
ピクセルアートを使用するゲームをGame Maker Studioで作成しています。ゲームを起動すると、すべての拡大されたテクスチャが本当にぼやけています。(小さなものには起こりません。)
たとえば、この画像
このようにゲームでレンダリングします:
とにかく、ぼやけたピクセルの代わりに小さなピクセルを大きなピクセルにサイズ変更することはありますか?
回答:
いくつかのリソースから解決策を見つけました。グローバルゲーム設定に移動し、任意のプラットフォームスポイラー(「Windows」や「Android」など)に移動します。「グラフィック」というタイトルのスポイラーを選択し、「ピクセル間の色の補間」をオフにします。楽しんで :)
誰もがすべてのスプライトを手動でスケールアップする必要があることに対処したくありません。それはずさんなワークスペースであるだけでなく、非常に専門的ではないものになってしまいます。グローバルゲーム設定で補間をオフにしても解決しない場合の解決策を見つけました。
texture_set_interpolation(false);
:)これがあなたの将来の努力に役立つことを願っています。
私がこれに対して一般的に行うことは、フォトショップまたはGIMP(スケール/ニアレストネイバー)を使用することです
しかし、GM:Sスプライトエディター自体でそれを行うには、スケールの代わりにストレッチコマンドを使用して、品質を低に設定します。それはブロッキーのような感じを保ちます
上記は、ATMで動作するゲームです。
マップの背景タブでスケール機能をオフにします。縮尺が合っていない場合は、背景のテクスチャが、現在の部屋/マップと同じサイズであることを確認してください。
または、この投稿を使用して、(できれば)鮮明な結果でバックグラウンドをアップスケールするバックグラウンドスクリプトを作成します。
これはサーフェスを利用しているので、さらにヘルプが必要な場合は、この投稿で多くの情報を提供します。
編集:
私の答えに戻ると、これはまったく問題がなく、チュートリアルの内容が必要であることに気付きました。ここにあります:
ステップ1:希望のスケールを選択します。部屋ごとにビューを使用し、ポートWとポートHを適切にスケーリングします。したがって、たとえば、2のスケールを使用している場合は、GMのルームエディターでは次のようになります。
これがすべての部屋で一貫していることが重要です。部屋がたくさんある場合は、コード*を使用すると簡単です。値が一定ではなく、複数の異なるスケールをサポートできるので、私はその方法を使用することを好みます。
ステップ2:screen_init、screen_begin、screen_endの3つのスクリプトを作成します。各スクリプトの内容は次のとおりです...
引用元:screen_init
// screen base(view_wview and view_hview)
screen_x = 0;
screen_y = 0;
screen_w = 320;
screen_h = 240;
screen_scale = 2;
// create a surface for the whole screen to be drawn on
screen = surface_create(screen_w,screen_h);
// this will destroy the screen object if surfaces are not supported on the graphics card, reverting to the viewport method
if screen = -1{instance_destroy();}
引用元:screen_begin
// this draws the surface on the screen
surface_reset_target();
draw_clear(0);
draw_set_blend_mode_ext(bm_one, bm_zero);
draw_surface_stretched(screen,screen_x,screen_y,screen_w*screen_scale,screen_h*screen_scale);
draw_set_blend_mode(bm_normal);
screen_refresh();
引用元:screen_end
// this sets surface 'screen' as the drawing target for everything in the game, so all drawing will be done on this surface and not on the game screen
surface_set_target(screen);
ステップ3:スクリプトがありますが、どこに行くのですか?オブジェクトを作成します。obj_screen、objScreen、o_screenなどのように、以下を実行します。
そして、そのオブジェクトをゲームの最初と最初の部屋に配置し、永続的であるとマークし、重複がないことを確認します。
これで完了です。これで、すっきりとした素晴らしいスケーリング= Dが得られました。
texture_set_interpolation(false)
そのまま描画させるために使用します。