スクラッチプログラミング - フライトシミュレーター|モバイル対応(たいおう)

Scratch (スクラッチ)で飛行機(ひこうき)がとぶうごきをつくります。マウスまたはタッチで操作(そうさ)できるモバイル対応(たいおう)のスクリプトです。キーボードなしのタブレットでもあそぶことができます。

スクラッチプログラミング - フライトシミュレーター|モバイル対応(たいおう)

飛行機(ひこうき)をとばそう

今回(こんかい)紹介(しょうかい)するのは、Scratch (スクラッチ)でつくるフライトシミュレーターです。

マウスやタッチ操作(そうさ)で飛行機(ひこうき)をうごかします。キーボードなしのタブレットにも対応(たいおう)するスクリプトです。飛行機(ひこうき)をなめらかにうごかす方法(ほうほう)や、まわりの景色(けしき)をうごかす方法(ほうほう)などをまなびましょう。

サンプルプロジェクト

下(した)にあるのは、フライトシミュレーターのサンプルプロジェクトです。記事(きじ)をよみすすめる前(まえ)に、飛行機(ひこうき)や雲(くも)のうごきをみておいてください。

Scratch|フライトシミュレーターのサンプルGIF
Scratch|フライトシミュレーターのサンプルGIF

飛行機(ひこうき)の最初(さいしょ)の設定(せってい)

飛行機(ひこうき)のスプライトをつくりましょう。

飛行機(ひこうき)をえがくときに注意(ちゅうい)してほしいのが、「スプライトの中心(ちゅうしん)の位置(いち)」です。飛行機(ひこうき)は、このあと、一回転(いっかいてん)するようにしていくので、キャンバスの中心(ちゅうしん)には、「飛行機(ひこうき)全体(ぜんたい)での中心(ちゅうしん)」ではなく「回転(かいてん)するときの中心(ちゅうしん)」をあわせてください。

ひこうきのスプライト
ひこうきのスプライト

次(つぎ)は、飛行機(ひこうき)の初期設定(しょきせってい)です。

  1. ほかのスプライトよりも手前(てまえ)に表示(ひょうじ)されるようにします。
  2. 表示(ひょうじ)する位置(いち)はステージの中央(ちゅうおう)です。
  3. むきは水平(すいへい)にします。
  4. x速度(そくど)y速度(そくど) は、飛行機(ひこうき)をうごかすための変数(へんすう)です。
  5. かたむき回転(かいてん) は、飛行機(ひこうき)のむきをかえるための変数(へんすう)です。
ひこうきのしょきせってい
ひこうきのしょきせってい

変数(へんすう)の値(あたい)は、飛行機(ひこうき)をうごかしている途中(とちゅう)で変化(へんか)するので、0 で初期化(しょきか)しておいてください。

ここまでで、飛行機(ひこうき)の最初(さいしょ)の状態(じょうたい)を設定(せってい)できました。次(つぎ)のセクションからは、うごきの種類(しゅるい)ごとにブロック定義(ていぎ)でまとめて、スクリプトをつくっていきます。

ブロック定義(ていぎ)については、以下(いか)の記事(きじ)で紹介(しょうかい)しているので参考(さんこう)にしてください。

スクラッチプログラミング -「ブロックていぎ」とは?じぶんでつくるブロック
プログラミングにつかうブロックを、あたらしくつくってみましょう。Scratchにはたくさんのブロックが用意(ようい)されていますね。でもそれだけでなく、じぶんでブロックをつくることもできますよ。

上下(じょうげ)にうごかす

ブロック定義(ていぎ)でつくる1つめのブロックは、上下(じょうげ)にうごかす です。マウスポインターまたは画面(がめん)のタッチで飛行機(ひこうき)を上下(じょうげ)にうごかせるようにしましょう。

まずは、マウスの位置(いち)やタッチした場所(ばしょ)が、飛行機(ひこうき)の上(うえ)のほうにあることを確認(かくにん)します。定義(ていぎ) 上下(じょうげ)にうごかす の下(した)に、次(つぎ)のようにブロックをつなげてください。

マウスやタッチのいちをチェックする
マウスやタッチのいちをチェックする

yざひょう にはいるのは、飛行機(ひこうき)の中心(ちゅうしん)の y 座標(ざひょう)です。その位置(いち)に 30 をプラスして、「マウスが飛行機(ひこうき)の上(うえ)のほうにあるなら」という条件(じょうけん)にしています。ここでは 30 をプラスしましたが、数値(すうち)はおこのみです。プラスする値(あたい)をちいさくすると、マウスを飛行機(ひこうき)の中心(ちゅうしん)からほんのすこしずらしただけでも飛行機(ひこうき)がうごくようになります。

つづいて、マウスが飛行機(ひこうき)の上(うえ)のほうにあるなら、飛行機(ひこうき)が上(うえ)へうごくようにしましょう。飛行機(ひこうき)はステージからはみださないようにしたいので、飛行機(ひこうき)の y 座標(ざひょう)が 100 よりちいさいときだけ、y速度(そくど) をふやします。

たてのいちをチェックしてへんすうをすこしずつふやす
たてのいちをチェックしてへんすうをすこしずつふやす

次(つぎ)は、飛行機(ひこうき)が下(した)へうごくようにしましょう。マウスが飛行機(ひこうき)の下(した)のほうにあって、飛行機(ひこうき)の y 座標(ざひょう)が -100 よりおおきいときだけ、y速度(そくど) をへらします。

たてのいちをチェックしてへんすうをすこしずつへらす
たてのいちをチェックしてへんすうをすこしずつへらす

最後(さいご)に、変数(へんすう)の値(あたい)に 0.9 をかけて、うごきだす時(とき)もとまる時(とき)もなめらかなうごきになるようにしましょう。

なめらかにうごかす
なめらかにうごかす

以上(いじょう)で、上下(じょうげ)にうごかす を定義(ていぎ)することができました。

左右(さゆう)にうごかす

ブロック定義(ていぎ)でつくる2つめのブロックは、左右(さゆう)にうごかす です。

飛行機(ひこうき)を左右(さゆう)になめらかにうごかす方法(ほうほう)は、さきほどの上下(じょうげ)にうごかすかんがえかたとおなじです。定義(ていぎ) 左右(さゆう)にうごかす の下(した)に、次(つぎ)のようにブロックをつなげてください。

マウスのいちをチェックしてよこへうごかす
マウスのいちをチェックしてよこへうごかす

横(よこ)へうごく時(とき)は、飛行機(ひこうき)がななめになるようにしたいので、むきをかえるためのブロックを追加(ついか)しましょう。

  1. ななめになりすぎないよう、むきの限度(げんど)を指定(してい)して、かたむき をすこしずつかえます。
  2. 変数(へんすう)の値(あたい)に 0.9 をかけて、なめらかにむきがかわるようにします。
みぎまたはひだりへかたむける
みぎまたはひだりへかたむける

うごきをたしかめよう

では、定義(ていぎ)したブロックをつなげて、ここまでのうごきを確認(かくにん)してみましょう。マウスポインターまたはタッチの位置(いち)におうじて飛行機(ひこうき)がうごくようになりました。

ひこうきがじょうげさゆうにうごく
ひこうきがじょうげさゆうにうごく

ずっと の前(まえ)に 1びょうまつ をつかっている理由(りゆう)は、飛行機(ひこうき)がすぐにうごきださないようにするためです。1びょうまつ をつかわない場合(ばあい)、緑(みどり)の旗(はた)をおしたらすぐに左上(ひだりうえ)へうごきだします。これは、緑(みどり)の旗(はた)は左上(ひだりうえ)にあるので、マウスやタッチの位置(いち)もそこにあると判定(はんてい)されるためです。

水平(すいへい)にする

ブロック定義(ていぎ)でつくる3つめのブロックは、水平(すいへい)にする です。さきほど、飛行機(ひこうき)が横(よこ)へうごく時(とき)にななめになるようにしましたね。今度(こんど)は、飛行機(ひこうき)のむきをもどして、水平(すいへい)の状態(じょうたい)でとまるようにしましょう。

  1. マウスポインターやタッチの位置(いち)が飛行機(ひこうき)の中心(ちゅうしん)にちかい場合(ばあい)
  2. 上下左右(じょうげさゆう)のはやさと、かたむきをリセットします。
マウスのいちをチェックしてへんすうを0にする
マウスのいちをチェックしてへんすうを0にする

ここでは、「マウスの位置(いち)が飛行機(ひこうき)の中心(ちゅうしん)から 10 以上(いじょう)はなれていない」という条件(じょうけん)にしています。マウスの位置(いち)を飛行機(ひこうき)の中心(ちゅうしん)ピッタリにあわせるのはとてもむずかしいため、10くらいの余裕(よゆう)をもった条件(じょうけん)にしてあります。

つづいて、飛行機(ひこうき)がどちらにかたむいているのかをチェックして、水平(すいへい)にもどしましょう。まずは、右(みぎ)にかたむいている場合(ばあい)です。

  1. 右(みぎ)にかたむいている場合(ばあい)
  2. 水平(すいへい)になるまで、左(ひだり)へすこしずつむきをもどします。
みぎにかたむいているなら90までむきをもどす
みぎにかたむいているなら90までむきをもどす

水平(すいへい)になるまでくりかえす条件(じょうけん)を、単純(たんじゅん)に むき = 90 にすると、飛行機(ひこうき)はずっとまわりつづけてしまいます。これは、変数(へんすう) かたむき をつかってむきが変化(へんか)するようにしているため、むき にはいる値(あたい)は少数(しょうすう)になり、ピッタリ 90 になることはないからです。これをふせぐために、むきをししゃごにゅう = 90 にして、ピッタリ 90 を確認(かくにん)できるようにしています。

次(つぎ)に、左(ひだり)にかたむいている場合(ばあい)のブロックも追加(ついか)しましょう。

ひだりにかたむいているなら90までむきをもどす
ひだりにかたむいているなら90までむきをもどす

一回転(いっかいてん)

ブロック定義(ていぎ)でつくる4つめのブロックは、一回転(いっかいてん) です。水平(すいへい)になっているときにクリックしたら、飛行機(ひこうき)が一回転(いっかいてん)するようにしましょう。

  1. 回転(かいてん)する方向(ほうこう)はランダムにしたいので、変数(へんすう) 回転(かいてん) にはいる値(あたい)を 12 のどちらかになるようにします。
  2. 回転(かいてん) の値(あたい)が 1 なら右回転(みぎかいてん)、2 なら左回転(ひだりかいてん)にします。
みぎまたはひだりにいっかいてんさせる
みぎまたはひだりにいっかいてんさせる

以上(いじょう)で、一回転(いっかいてん) を定義(ていぎ)することができました。回転(かいてん)できるのは水平(すいへい)になっているときだけなので、定義(ていぎ) 水平にする にブロックをくみあわせてください。

ひこうきのちゅうしんちかくをクリックしたらいっかいてんする
ひこうきのちゅうしんちかくをクリックしたらいっかいてんする

そして、水平にするずっと の間(あいだ)に追加(ついか)しましょう。

「さゆうにうごかす」のしたに「すいへいにする」をつなげる
「さゆうにうごかす」のしたに「すいへいにする」をつなげる

飛行機(ひこうき)のスクリプトは以上(いじょう)です。

雲(くも)をたくさん表示(ひょうじ)する

ここからは、雲(くも)のスプライトを用意(ようい)してスクリプトをつくっていきましょう。

くものスプライト
くものスプライト
  1. たくさんの雲(くも)はクローンでつくります。
  2. 位置(いち)はステージの中央(ちゅうおう)あたり、サイズをちいさくし、すこし透明(とうめい)にして、表示(ひょうじ)します。
くものクローンをつくる
くものクローンをつくる

雲(くも)は、変数(へんすう)をつかって、おおきさと位置(いち)をかえながらうごくようにします。一定(いってい)の数値(すうち)ではなく変数(へんすう)をつかうのは、雲(くも)がちかづくにつれて、おおきさや位置(いち)をかえる量(りょう)が徐々(じょじょ)にふえるようにするためです。こうすることで、ステージにおくゆきをもたせ、飛行機(ひこうき)のスピードをかんじることができます。

では、サイズと位置(いち)を指定(してい)するための変数(へんすう)を3つ用意(ようい)しましょう。クローンごとに、おなじ変数名(へんすうめい)で別々(べつべつ)の値(あたい)を利用(りよう)できるよう、「このスプライトのみ」にチェックをいれて変数(へんすう)をつくってください。

「くものサイズ」「くものいちx」「くものいちy」を0でしょきかする
「くものサイズ」「くものいちx」「くものいちy」を0でしょきかする

雲(くも)のサイズと透明度(とうめいど)がかわるようにしましょう。

  1. サイズをすこしずつおおきくします。
  2. 透明度(とうめいど)をへらします。
  3. 指定(してい)したサイズまでおおきくなったクローンは削除(さくじょ)します。
おおきさとゆうれいのこうかをへんかさせる
おおきさとゆうれいのこうかをへんかさせる

x 座標(ざひょう)と y 座標(ざひょう)をかえて、雲(くも)をうごかしましょう。

  1. 最初(さいしょ)に表示(ひょうじ)された位置(いち)が左(ひだり)よりなら左(ひだり)へ、そうでなければ右(みぎ)へすこしずつうごかします。
  2. 最初(さいしょ)に表示(ひょうじ)された位置(いち)が下(した)よりなら下(した)へ、そうでなければ上(うえ)へすこしずつうごかします。
xざひょうとyざひょうをへんかさせる
xざひょうとyざひょうをへんかさせる

スクリプト完成(かんせい)

フライトシミュレーターの完成(かんせい)です。

ひこうきのスクリプト
ひこうきのスクリプト
くものスクリプト
くものスクリプト

Scratch の Pyxofy ページへいって、実際(じっさい)にフライトシミュレーターであそんでみてくださいね。Scratch スクラッチプログラミング - フライトシミュレーター|モバイル対応 by Pyxofy

Pyxofy (著)「きょうからはじめるスクラッチプログラミング入門」

Pyxofy が Scratch の電子書籍を出版しました!Kindle・Apple Books からご購入ください。

詳細はこちら

まとめ

今回(こんかい)は、Scratch でフライトシミュレーターをつくりました。

上下左右(じょうげさゆう)の移動(いどう)やかたむきの変化(へんか)は、変数(へんすう)に 0.9 をかけることによって、うごきだしもうごきおわりもなめらかです。また、まわりにある雲(くも)を変数(へんすう)をつかってうごかすことで、おくゆきと飛行機(ひこうき)のスピード感(かん)をだしました。

ここで紹介(しょうかい)したスクリプトを応用(おうよう)して、障害物(しょうがいぶつ)などを出現(しゅつげん)させたりすると、飛行機(ひこうき)のゲームをつくることができますね。ぜひためしてみてください!

最後まで読んでいただき、ありがとうございます。この記事をシェアしてくれると嬉しいです!

SNS で Pyxofy とつながりましょう! LinkedInThreadsBlueskyMastodon X (Twitter) @pyxofyFacebook

関連記事

スクラッチプログラミング - ライフ(HP)のつくりかた
ゲームでつかえるライフ(HP)のプログラムを紹介(しょうかい)します。ハートのスプライトでライフを表示(ひょうじ)して、ダメージをうけたときに1ポイントずつへるようにプログラミングします。
JavaScript - 自動で画像が切り替わるスライドショーの作り方
複数の画像を順番に表示するスライドショーを作ります。一定の間隔で自動的に画像が変わるだけでなく、クリックして表示を切り替えることもできるようにコーディングします。
CSS Art – How to Make a Sunset Scene
In this step-by-step article, we’ll combine CSS linear, radial, conic gradient and mask image to make a sunset scene.
CSS Animation – Space Shuttle Launch
Space, the final frontier! Join us in recreating the iconic space shuttle launch scene using CSS in this step-by-step article.