JavaScriptでレーザービームのようなエフェクトを作ります。レーザービームをただの直線ではなく周囲をボンヤリと明るくさせます。

調べてみるとやり方は簡単。ctx.shadowColorとctx.shadowBlurを設定するだけです。

レーザービームっぽい直線を描画する

index.js

ぼかしの調整

ぼかしが薄すぎる場合は何回か繰り返して描画することでそれっぽく描画させることができます。

ぼかしの効果をシミュレーションする

発射ボタンをクリックするとレーザーが発射されたような描画をさせてみます。またレーザービームを描画する回数を変化させることでどのようにぼかしの効果が得られるのかがシミュレーションできるようにします。

グローバル変数と定数

グローバル変数と定数を示します。

index.js

drawLine関数とdrawBlurLine関数は上記のものと同じです。

ページが読み込まれたときの処理

ページが読み込まれたらcanvasのサイズを調整して発射ボタンをクリックしたらレーザービームを発射する処理がおこなわれるようにします。そして更新処理を開始します。

発射時の処理

発射ボタンがクリックされたらレーザービームの先端部と尾部の座標をセットします。今回はサンプルプログラムなので同じ場所から同じ方向に発射されるようにしています。

更新と描画の処理

更新処理の部分を示します。

描画回数を変えることでレーザービームっぽく見えたり見えなかったりすることが確認できると思います。また描画回数を大きくしすぎると動作速度が極端に低下してしまうことも確認できます。これに関しては生成したレーザービームを何度も描画するのではなく、一度描画されたものを再利用することで処理にかかる時間を短縮するなどの工夫が必要です。