私は、コリジョンマップと、光源にしたいいくつかの場所を持っています。光源は、実際に地面を見ることができる形の光を提供します。それは次のようになります。2D照明 - 光が壁を通り抜けないようにする
ので、光が壁を通過します。私はそれがこのように見えるようにしたい:
(私は濃い黄色と壁との衝突をマーク)
壁に会うときに光線が停止します。
私の最初のアイデアは、ソースから光線を投射し、壁に衝突したときにチェックすることでした(私はこれを行う方法はわかっています)。しかし、私は光線を生成するにはあまりにも時間がかかるので、例えば0.001度ごとに光線を投射する必要があります。次のことは、光の形が常に円ではなく、時には楕円または半楕円、三角形または円の一部であってもよいことです。一般に、私は何も衝突しない光でビットマップを持っています、そして、私はそれを2番目のイメージのように見せかけるために少し引きます。
最後に、allegro 4.2.1を使用していますが、前述のすべてのビットマップは、0と1の2次元配列です。
何か助けてくれてありがとうございました。長い質問と私の悪い英語で申し訳ありません。
直線的な障害物によって生成された影がセクタになるという事実を利用できますか?強さに応じて半径を持つ円形のライトから始め、各障害物の逆の色で台形を描きます。 –
hm、もう少し説明できますか? –