html

HTML5/Javascriptで糸通し風アプリを作る(改良)

前回に作成したアプリでは何点か不満な箇所があったのでよりゲームっぽくなるように改良してみた。

改善点
・スマホ/タブレット対応
・曲線をより滑らかに描画
・障害物を出現
・経過時間を左上に表示

完成品

[操作方法]
PC → クリック中:上昇、非クリック中:下降
PC以外 → タップ:上昇/下降切り替え

設計図

実装のイメージはこんな感じ。

f:id:segmentation-fault:20170826170551p:plain

糸(曲線)の速度方式

糸(曲線)の上昇、下降の制御は下記のように実装。
デバイスがPCの場合はonmouseup, onmousedown、PC以外はonclickで制御することにした。

上昇または下降速度Vnewは下記式で計算している。

(式) Vnew = Vold + 重力加速度 * 単位時間

糸(曲線)の描画

前回は大きさが2pxの正方形を細かく描くことで曲線を表現していたが、上昇or下降時に点の隙間が目立つため細かく直線を描く方式に変更した。

変更前

変更後

障害物の生成

障害物は横8px, 縦が最大160pxの長方形を2秒に一回、画面右端のランダムな高さに発生させている。画面の描画周期ごとのに右端から左に向かって移動する。

経過時間の表示

描画周期ごとに経過時刻を左上に表示している。

ゲームオーバー判定

ゲームオーバー判定(あたり判定)の条件は下記となっている。キャンバスの上端or下端、または障害物に接触した場合は即ゲームオーバーとなる。

ソースコード全体

まとめ

多少はまともなアプリになったと思うけどスマホの動作がまだ不安定で気に食わない。あまり知識が無い中で作っているため、おかしな実装や冗長な表現をしているかもしれない。再度勉強してから見直してみようと思う。