第2.24話 共同作業
家に帰り、最初にお風呂のお湯を抜く。お湯を抜いている間に、部屋着に着替え、そして、お風呂を洗う。
最近、お風呂に入る時間が遅くなっている。このままでは、家族がお風呂に入る時間も遅くなってしまう。改善しなくては。
家に帰る途中、メデューサの攻撃方法と動きについて考えていた。おかげで、頭の中である程度組み上げることが出来た。とはいえ、今から始めても、今日中には終わらないだろう。そのため、頭の中にあるものを、一晩寝かせることにした。他にもアイデアが浮かぶかもしれない。
ということで、今日は勉強を進めることにした。内容は、シューティングゲームにも活かせるかもしれないものである。重力と慣性の法則を参考にして、物が落ちる処理をリアルにする。最低限必須な知識、というものではないと思うが、あれば便利で、作れるものの幅が広がるだろう。
早速、この勉強のための新しいプロジェクトファイルを作成する。ファイル名は、Dropでいいだろう。落とすを英語にしたものだ。
シューティングゲームに合わせるため、飛行機から落とす爆弾の動きを考える。
飛行機の動きは、とりあえずシューティングゲームと同じでいいだろう。
まずは、爆弾の動きに必要な情報を考える。重力を考慮するなら、位置以外に、落ち始めてからの経過時間が必要だろう。そして、落ちてからの経過時間を測るなら、落ちているかそうでないかを入れる変数も必要だろう。
とりあえず、重力だけを取り入れた爆弾のプログラムを書いてみる。
Bキーを押したら、投下するようにしよう。それまでは、爆弾の位置を飛行機に合わせ続ける。
投下を始めたら、重力の反映だ。爆弾に恋に信頼、ものを落とせば、スピードを上げながら落ちていくというのは世の常。それを実装しよう。
gravityという名前の定数をつくり、適当な値を入れる。それを半分に割って、投下開始からの経過時間を2乗したものと掛けあわせる。それをフレーム毎に、爆弾の縦座標へ代入すると、スピードを上げながら落ちていく動きが作れる。
実装して動かしてみる。確かにスピードを上げながら落ちているのだが、全体的に遅い。一度、1秒毎に爆弾の位置を表示するプログラムを書いて、確認してみる。重力を計算できるサイトがあるので、そこでの結果と照らし合わせるが、あまり差は見つからない。誤差だろう。
腕を組み、目を閉じて考える。
そうだ、重力の計算はメートル、シューティングゲームの世界はドット。単位が違うのだ。調べた計算式をそのまま使っても、欲しい結果が得られるわけではない。
とりあえず、100ドットを1メートルとしてみる。計算式に100を掛けて、もう一度実行する。先程よりも早く落ちて、それっぽくなった。
これで、重力を実装することが出来た。もちろん、そこまで大したものではない。世に出回っている物理シュミレーションソフトに比べれば、精度は落ちるだろう。だが、今作っているシューティングゲームではこれで十分だ。一つのことにこだわるあまり、ゲームが完成しなければ本末転倒である。
慣性の法則を参考にしたものも実装したかったが、それはまた今度にしよう。
しかし、やりたかったことが実現するのはいいものだ。軽く背伸びをしながら、達成感を噛みしめる。ついでにあくびもする。
いつの間にか親も帰宅していたようで、下から話し声が聞こえる。たまには、今日こんなことできたんだぜと、話をしてみてもいいかもしれない。
新規登録で充実の読書を
- マイページ
- 読書の状況から作品を自動で分類して簡単に管理できる
- 小説の未読話数がひと目でわかり前回の続きから読める
- フォローしたユーザーの活動を追える
- 通知
- 小説の更新や作者の新作の情報を受け取れる
- 閲覧履歴
- 以前読んだ小説が一覧で見つけやすい
アカウントをお持ちの方はログイン
ビューワー設定
文字サイズ
背景色
フォント
組み方向
機能をオンにすると、画面の下部をタップする度に自動的にスクロールして読み進められます。
応援すると応援コメントも書けます