Javascriptで物理シミュレーション(落下運動、衝突)

つみきのアプリエンジニア、鈴木慎吾です。
前回の「単振動・空気抵抗」に引き続き、今回は落下運動と衝突をJavascriptで再現しています。

init関数内では、ballの初期座標、画面の下端の座標を設定します。(24〜31行目)

空中の物体には質量に応じて重力による一点の加速度(重量加速度)が働きます。 そのため、onTimer関数内でballのY方向の速度vに加速度gを加算します。(57行目)

そして、ballが画面の下端まで達したら跳ね返るように、(ball.y > bottomY)の条件の場合には、ballのy座標を折り返し、速度を反転します。この際、跳ね返ったボールの座標が徐々に減衰するように、反転したy座標と速度に衝突係数を乗算します。(62〜65行目)

さらにX方向にもballを動かしてみます。

init関数ではx方向の初速度を設定し(42行目)、右端と左端の座標を設定します。(33〜34行目) onTimer関数内では下端に衝突した場合の処理にx方向の速度を減衰させるために衝突係数を乗算します。(77行目) 右端に衝突した場合(83〜85行目)と、左端に衝突した場合(89〜91行目)には、下端に衝突した場合と同様、 ballのx座標を折り返し、x方向の速度を反転して衝突径数を乗算し、y方向の速度は反転せずに衝突径数を乗算します。

スマホアプリ制作、Web制作、UIコンサルなどのご依頼はこちら

お問い合わせ