この記事のURL: https://goo.gl/skkmra
この記事でやること
- ゲームにリアルな動きを!
- ゲームの中では、キャラクターが飛んだり落ちたりする。
- こうした「動き」をリアルに再現したい。
- では、どうすればいい?
- モノの動きは物理法則に従う。
- コンピュータの中で物理法則を**シミュレート(真似)**しよう!
- これが「物理シミュレーション」。
カンタンな物理シミュレーションを覚えて、リアルなゲームを作ろう!
第1回: キャラクターを加速させてみる
やってみよう(1)
まず、Scratchの復習を兼ねて、キャラクターが一定のスピードで動くだけのプログラムを作ってみよう。具体的には、次のような形でプログラムを作ってみよう。
- 最初にキャラクターの向きを45度にする。
- 0.1秒ごとに、10歩ずつ動かし、もし端についたら跳ね返る。
ヒント:
- 「動き」の「〜度に向ける」や「〜歩動かす」を使う。
- 「制御」の「ずっと」(くり返し)を使う。
「位置」だけでなく「速さ」を考えよう
- モノの動き方をリアルに再現するには、未来の動き方を予想できないとダメ。
- そのためには、「速さ」を考えることが大事。
- モノの「位置」だけでは、ある瞬間の後どのように動くかが分からない。
- 「速さ」が分かっていれば、ある瞬間の後どのように動くかが予想できる。
- 身近な例
- モノが落ちるときの動き(一定のスピード=重力加速度で速くなる)
- 自動車の動き(アクセルで速く、ブレーキで遅くなる)
リアルな動きを再現するには「速さ」が必要!
やってみよう(2)
上のプログラムを改良して、キャラクターが動く速さが時間の経過とともに変化するプログラムを作ってみよう。具体的には、以下のように作ってみよう。
- 「速さ」という名前の変数を用意する。
- 0.1秒ごとに、「速さ」の分だけ進むようにする。
- 0.1秒ごとに、「速さ」を1ずつ増やす。
ヒント:
- 「データ」の「変数を作る」から変数を作れる。
- 「速さ」の値を最初に0にリセットしておこう。
チャレンジ(1)
上のプログラムを改良して、キャラクターが一つだけでなく、1秒ごとに1つずつ増えるプログラムを作ってみよう。具体的には、次のように作ってみよう。
- 1秒ごとにキャラクターをクローンする。
- クローンされたキャラクターの位置と向きをランダムに決める。
ヒント:
- 「制御」の「〜のクローンを作る」を使う。
- クローン元は隠しておき、クローンされたときに表示されるようにする。
チャレンジ(2)
上のプログラムを改良して、キャラクターをクリックすると消えるようにしてみよう。
チャレンジ(3)
上のプログラムを改良して、今画面の上に表示されているキャラクターの数を表す変数を作り、もしキャラクターの数が10を超えたら、ゲームオーバーとするプログラムを作ってみよう。また、キャラクターの向きが少しずつランダムに変わるようにしてみましょう。
第1回の解答(例)
やってみよう(1)
やってみよう(2)
チャレンジ(1), (2)
チャレンジ(3)
キャラクターのスプライトに加え、「Game Over」と表示するためのスプライトを作りましょう。
キャラクターのスプライトの方のスクリプトは、次のように作ります。
「Game Over」のスプライトの方のスクリプトは、次のように作ります。