2Dタイル照明
答えて
私は、スムーズな照明効果を2Dタイルグリッドに適用する方法を共有します。 ClassicThunderのanswerは、シャドウのための素晴らしいリンクを提供します。
まず、各タイルの照明値を計算し、後でぼかしていく必要があります。私がコードに入る前に、これがどのように機能するかを説明しましょう。
Basicly、私たちがやることは、我々は固体のタイルを見つけた場合、としてそれを設定し、タイルが空白の場合、最大輝度にCurrentLight
変数を設定し、上から順に、すべてのタイルをループでありますCurrentLight
変数を使用し、CurrentLight
から「吸収」量を減算します。このように、次の実線のタイルでは、タイルをCurrentLight
の値に設定すると、わずかに少なくなります。このプロセスは、配列が反復されるまで繰り返されます。
ここで、上から下の照明効果が上手くいくでしょうが、それほど優れていません。このプロセスをさらに3回、下から上、左から右、右から左へ繰り返す必要があります。そしてそれはより良い品質のために何度も繰り返すことができます。
は基本的に
if (tile.Light > CurrentLight) //If this tile is brighter than the last, set the current light to the tiles light
CurrentLightR = tile.Light;
else if (CurrentLight != 0f) //If it is less, and isnt dark, then set the tile to the current light
tile.Light = CurLightR;
if (tile.Light == CurLightR) //If it is the same, subtract absorb values
CurrentLight -= tile.Absorb;
そして、そこに行くループ内のすべてのタイル、素敵なタイルの照明にこのコードを実行しています。しかし、あまり「ピクセル化」されていないようにするには、question on gamedevをチェックしてください。
ピクセル単位の照明については、私はそれについて知らないので、どこか別のものを見ること。 SpriteBatch.drawの
の場合、いくつかのオーバーロードされたメソッドには色が付きます。 Color.Whiteを使用すると、SpriteBatchが描画するスプライトは通常の色です。
基本的に新しい色を作成することによって使用色の乗算(Color.yourcolor.r *フロート、Color.yourcolor.y *フロート、Color.yourcolor.z *フロート、255)
、フロートを取得します近くのライト(おそらく配列やリストに格納されている)に起因するブロックの明るさを計算する式を見つけようとします。 2Dゲームに必要な法線はないので、この式は比較的簡単になるはずです。
Catalin's excellent lighting tutorialをご覧ください。私はそれがあなたのすべての要件を満たすと信じています。
のように聞こえる "(私はCatalinのチュートリアルを見つけたが、それは私のために高度に見えたようだ)"うーん...私は病気はそれを見てanouserを取ると思います – Cyral
おっとすみません。しかし、私はライティングが非常に高度なトピックであることを恐れているので、それを行う方法を教え、従うのは簡単なチュートリアルを見つけるのは難しいでしょう。 – ClassicThunder
本当に、私はチュートリアルで作業していましたが、私はライトポイントを使用していましたが、シャドーを動作させるためにDrawTiles()を呼び出す場所を少し混乱させました。基本的に私はタイル[、]配列を持っていますが、カタルーニャが単一の画像で行う方法でそれを侵すようです。 – Cyral
- 1. タイル2d地図ガイド
- 2. Unity 2017.2 2Dタイルマップとタイル
- 3. 2Dタイルベースの円滑な照明
- 4. XNA 4 2Dタイル状スプライト - 奇妙な線
- 5. データ構造2D/3Dタイル配列C++
- 6. 2Dオブジェクトを後ろから照明する
- 7. 2Dエリアで不明なキャラクタ
- 8. Pygame 2dタイルのスクロール・エッジはロードされません
- 9. 2D照明 - 光が壁を通り抜けないようにする
- 10. 透明なNSWindowでの2D図面
- 11. 石英2D不透明なデータタイプ
- 12. Unity 2D - スクリプト起動時のNull参照
- 13. 2D配列 - 行と列の照会
- 14. Cocos2dマスクレイヤー(タイルマップ照明)
- 15. Three.js MeshPhongMaterialワイヤフレーム照明
- 16. 2次タイルのタイトルが明確でない
- 17. タイルベースの照明システムの半透明性
- 18. タイルでタイルを移動する
- 19. AndroidのOpenGL拡散照明
- 20. GLSLの奇妙な照明
- 21. LWJGL高度照明システム
- 22. iOS照明リネンの背景?
- 23. OpenGL指向照明+ポジショニング
- 24. ゲーム照明システムのアーキテクチャ
- 25. Phong照明モデルは実際には何も照明していません
- 26. StrutsタイルActionError
- 27. GDAL2タイルとベクトル
- 28. 移動タイルBATCH
- 29. 地図タイル(リーフレット)
- 30. DisplayTagとタイル
-1 4。デフォルトの動作(Color * float)の下で0を指定すると、明度/暗さが変更されず透明度が変更されます。 http://blogs.msdn.com/b/shawnhar/archive/2010/04/08/premultiplied-alpha-in-xna-game-studio-4-0.aspx – ClassicThunder
@ClassicThunderの周りには何か方法がありますか? – Neomex