STERFIELD

HTML5のCanvasアニメーションに挑戦

HTML5のCanvasアニメーションに挑戦

徐々にHTML5のCanvasを実用として使ったサイトを見る機会が増えてきました。

自力でもCanvasを扱えるようになるため、実際に作ってみることにしました。

 

こちらのサイト(→https://layervault.com/)のトップCanvasアニメーションが面白かったので、

マウスを近づけると立ち上る円が避けていく動きを、再現してみました。

↓こちらが作ってみたもの

DEMO

 

今回は1つずつしか円が出てこない簡単なものにしました。

 

方法

まずはこちらがコード

HTML

 JavaScript

 

アニメーションする円の座標と、マウスの座標を利用して、

マウスを近づけると円がマウスを避けるように動きます。

衝突判定はこちらのサイト(→http://marupeke296.com/COL_2D_No3_PointToCircle.html)を参考にさせていただきました。

 

マウスの座標 横方向:mx 縦方向:my
反応させるマウス周辺の半径 mr

アニメーションする円の座標 横方向:cx 縦方向:cy
アニメーションする円の半径 cr

として、

(cx – mx)*(cx – mx)) + ((cy – my)*(cy – my)) <= (cr+mr)*(cr+mr)

が成立するとき、反応するようにしました。

マウスが円の左なら右に、右なら左に避け、マウスが円の進行方向にあれば減速、逆なら加速するようにしました。

 

参考にしたサイトと、反応したときの動きの早さなど、違いはありますが、基本的な動きはこれでよさそうです。

後は複数の円の表示に対応させれば、あのアニメーションを再現できそうです。

 

Author Profile

著者近影

NINOMIYA

Webデザイナー兼コーダー出身のフロントエンド開発者です。 UXデザインやチーム開発の効率化など、勉強中です。

SHARE

合わせて読みたい