
Lesson4 Flashを使ったゲーム制作
今回から始まるLesson4では簡易的な物理シミュレーションを使って、簡単なFlashゲームを制作して みよう。Flashゲームはちょっとしたミニゲームから、これがFlashでできているの!?と驚くような本格的なものまでさまざまなものがある。いきな り本格的なものは敷居が高いので、まずは簡単なものから始めてみよう。Flashゲームの制作はActionScriptのスキルアップにおおいに役立つ だろう。
(解説:茅原 伸幸)
第2回 アプローチショットゲーム
前回はパットゴルフを作成した。今回は横から見たアプローチショットゲームを作成してみよう。まずはサンプルを見てもらいたい【サンプル1】。
【サンプル1】画面内をクリックするとその方向にボールが飛ぶ
画面内をクリックするとクリックした位置の方向にボールが飛んで行き、バウンドして止まる。バンカーに落下した場合はバウンドが小さくなるようにしよう。
前回のグリーン上でのパットゴルフと見た目は大きく違うが、ActionScriptは前回の【図3】とほとんど同じだ。今回は、まず最終的なActionScriptからご覧いただきたい【図1】。

【図1】【サンプル1】で使用しているActionScript
【図1】の黄色い部分が第1回【図3】からの変更点で、赤い部分が今回のポイントとなる追加部分だ。最初に黄色い変更点から見ていこう。
「ボールの影」のムービークリップ
前回の作例ではボールのムービークリップ内に「ボールの影」をそのまま描画していたが、今回はボールと影が離れて移動するため、分離して、影のみのムービークリップ(インスタンス名:kage)を作成している。その上で、メインステージ上でボールの背後となるレイヤーに配置してある【図2】。

【図2】ボールと影の拡大図
影のムービークリップの動きはy座標の値は固定したまま、x座標をボールのx座標に合わせて移動させているだけだ。また、ボールの表示・非表示に合わせて影の表示・非表示も切り替えている。
そのほかの黄色い部分は、不必要になったActionScriptを削除したり、若干数値を変更して動きを調整しているが、それほど重要ではない。第1回【図3】と見比べていただければ容易に理解いただけるであろう。今回のポイントは【図1】の赤い部分、「重力とバウンドの表現」にある。
■Point 重力とボールのバウンドを表現する
【図1】の赤い部分の(A)では、ボールのspeedYに値を加算し続けている。つまり、y座標のプラス側(画面下側)に常に速度を加算し続け、「重力」を表現している。現在0.9になっている値を小さくすれば、月面上でのゴルフ!?のようなふんわりとした動きになる。いろいろ値を変更してみるとおもしろいだろう。
次に【図1】の赤い部分の(B)では、ボールが地面に着地した場合の処理を設定している。次の補助線を入れた【図3】を見ていただくと理解が早いだろう。

【図3】ボールのバウンドする動きは、y座標166の赤いラインを基準としている
ゲーム画面にはこのラインを表示させていないが、y座標166の位置に引いた赤いラインの位置をボールがバウンドする際のベースにしている。
詳しく解説すると、まずボールのy座標が160(y座標166からボールの半径6pxを引いた値)を超えると地面に当たったと判定させている。そして、ボールのspeedY(垂直方向へのスピード)に-1を乗算して符号を反転させ、逆向きのスピードにして、はねかえるようにしているわけだ。
そのとき、【図1】ActionScriptの赤い部分で、最後から2行目に記述しているように、ボールのy座標を接地した位置である160の位置に戻すことが重要だ。この処理をしないと、160を超えたときのタイミングによっては、160を超えた位置で延々符号の反転を繰り返してしまい、バウンドして戻ってこないことがあるからだ。
また、今回はボールが着地したときのx座標の位置によって「バンカー」と「カップイン」との場合分けをしている。バンカーに着地した場合は、ボールのspeedYに-1を乗算する際、0.2を合わせて乗算している。これによりスピードが80%減速し、あまりはねかえらないような動きを表現している。それ以外の部分は0.7を乗算し、バウンドするたびに30%減速するような設定としている。
解説してしまえば単純で簡易的な方法だが、バンカーなどがあることで、ゴルフゲームとして成り立っているように思う。ホールインワンになるまで、繰り返したくなる人も多いのではないだろうか。
次回へつづく
![]() |
[プロフィール] かやはら・のぶゆき●1972年生まれ、広島在住。広島大学経済学部卒業後、紆余曲折の末、2006年5月に株式会社メディア・パルサーを設立。若手を鍛えながらFlash制作に勤しむ。二児のパパ。 http://www.procreo.jp/ |




