3

私は経験豊富な開発者ですが、グラフィックス/ゲーム プログラミングには完全に慣れていないので、5 歳のように説明してください。

ゲームプログラミングを学ぶために簡単なゲームを書いています。Paint.NET を使用して *.png 画像を作成し、画像を 50% 透明にしました。ただし、画像を読み込むと、透明度なしでレンダリングされるようです。オブジェクトは単色のように見えます。(はっきりさせておくと、背景が透明なベタ画像を作成するだけでなく、画像全体を半透明または「シースルー」にしようとしています。それもできるようにしたいのですが。)

私がここで特別なことをしていないことは想像に難くないかもしれませんが、役立つコードがあれば喜んで示します。たとえば、テクスチャをロードします。

var Texture = content.Load<Texture2D>("Gamepiece");

そしてそれを描く:

spriteBatch.Draw(Texture, Location, Color.White);

私の begin ステートメントはデフォルトを使用しています。私はパラメータを渡していません(とにかくそれらを理解していません)。

spriteBatch.Begin();
4

1 に答える 1

5

その秘訣は、SpriteBatch.Beginメソッドへのパラメーターにあります。あなたの場合、BlendStateを設定したいと思います。遅かれ早かれ、おそらく他のパラメーターも使用したくなるでしょうが、今のところは 2 つのパラメーターのオーバーロードを回避できます。アセットを XNB ファイルにプリコンパイルしている場合は、次のように BlendState.AlphaBlend または BlendState.Additive のいずれかが必要になるでしょう。

_spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend);

または、png を直接ロードしている場合は、おそらく BlendState.NonPremultiplied が必要になります。値をいじって、どの効果が最も適しているかを確認してください。

于 2013-10-02T10:33:00.713 に答える