VProjectカッコカリ 45:技術メモ(スモークの影)
スモークの影の描画
壁の影を描画するのに、
Lighting in GameMaker (HTML5/WebGL Compatible)
こちらとほぼ同じ方法を使っていたのですが、
今回は、それをスモークにもそのまま流用した所、
影が十分表示されない事態となりました。
(壁の影は消しています)
(プレイヤーの中心がモク中に入った時はスモークの影は消しています)
スモークの境界とプレイヤーの中心とが近い時、
一部の影が狭くなってしまいました。
こうなる理由
(上図の長さ・角度などは手書き故不正確です)
プレイヤーの中心から、スモークや壁の四隅への延長線上の
ある一定の長さ分伸ばした地点を頂点として
それらを順に繋いで三角形を数珠つなぎに形成し
それらの三角形を影の色で塗りつぶして
影を描いているので、
スモークや壁の四隅とプレイヤーとの中心とが近いと、
幾何学的に、影が薄くなってしまうのです(伝われ(伝わってなかったらすみません))
そもそも、今確認したところ
参考にした上記のサイトのデモでも、
壁と光源位置とが近いと同じ問題が起きてました。
対処
壁の四隅以外にも、
辺の中点を使うようにすれば
良い感じに
影の厚みが担保できそうな気がします。幾何学的に。
あるいは、
プレイヤーの中心がモク外の時は
モク中を影で塗りつぶす。
プレイヤーの中心がモク中の時は、
外を良い感じに塗りつぶす。(詳しくは思いつかないけど)