スクラッチプログラミング - 360°プラットフォーマー

回転(かいてん)するプラットフォームゲーム

この記事(きじ)では、Scratch (スクラッチ)でつくる360°プラットフォーマーのスクリプトを解説(かいせつ)します。

360°プラットフォーマーは、そのなのとおり、ひとつのプラットフォームを360°回転(かいてん)させてあそぶゲームです。たいらな地面(じめん)のプラットフォーマーとくらべると、プラットフォームのうごかしかたや、あたり判定(はんてい)のかんがえかたなど、いくつかちがいがあります。

「一般的(いっぱんてき)なプラットフォーマーはもうつくれるよ」というかたは、ぜひ一緒(いっしょ)に、360°プラットフォーマーづくりにチャレンジしてみましょう。

サンプルプロジェクト

下(した)にあるのは、360°回転(かいてん)するプラットフォーマーのサンプルプロジェクトです。うごいているのは、プレイヤーではなくプラットフォームです。記事(きじ)をよみすすめる前(まえ)に、プラットフォームのうごきをみておいてください。

Scratch|360°プラットフォーマーのサンプルGIF

プレイヤーを用意(ようい)しよう

最初(さいしょ)に、プレイヤーのスプライトを用意(ようい)しましょう。ここでは、プレイヤーとしてつかう角丸(かどまる)四角(しかく)のつくりかたを説明(せつめい)します。

キャンバスの目(め)にあわせて、四角(しかく)をえがいてください。そして、四角(しかく)の角(かど)から1マスめのところを、形(かたち)をかえる矢印(やじるし)で8箇所(かしょ)クリックします。

しかくをえがく

形(かたち)をかえる矢印(やじるし)で、四角(しかく)の角(かど)を選択(せんたく)し削除(さくじょ)すると、角丸(かどまる)四角(しかく)になります。

かどを4かしょさくじょする

プレイヤーは、x 座標(ざひょう) 0、y 座標(ざひょう) 0 の位置(いち)に表示(ひょうじ)しておいてください。

プラットフォームを用意(ようい)しよう

次(つぎ)に、プラットフォームをつくりましょう。360°プラットフォーマーでは、地面(じめん)は平(たいら)ではなく、円形(えんけい)です。

プラットフォームのスプライト

おおきく表示(ひょうじ)する - サイズハック

ステージの横幅(よこはば)いっぱいに表示(ひょうじ)されるよう、プラットフォームのサイズをおおきくしましょう。

ステージ下(した)の「おおきさ」、またはブロックパレットにある おおきさを ◯ %にする におこのみの数値(すうち)を入力(にゅうりょく)してブロックをクリックしてください。

入力(にゅうりょく)した数値(すうち)までおおきくなりましたか?場合(ばあい)によっては、指定(してい)したとおりにおおきくならないことがあります。その理由(りゆう)は、スプライトをどれだけ拡大(かくだい)できるかの限度(げんど)があるからです。

おもったようにサイズがおおきくならない場合(ばあい)は、次(つぎ)の方法(ほうほう)をためしてみてください!

まずは、空白(くうはく)のコスチュームを追加(ついか)します。空白(くうはく)のコスチュームにはサイズの限度(げんど)がないので、これを拡大用(かくだいよう)としてつかっていきます。

なにもえがいていないコスチュームをついかする

そして、ブロックを下(した)のようにつなげましょう。最初(さいしょ)に拡大用(かくだいよう)のコスチュームでおおきさを指定(してい)しておくと、プラットフォームのコスチュームにきりかえても、そのおおきさで表示(ひょうじ)することができます。

サイズをおおきくするためのスクリプト

障害物(しょうがいぶつ)などをえがく

プラットフォームに、障害物(しょうがいぶつ)やゴール、壁(かべ)や丘(おか)などを追加(ついか)しましょう。

プラットフォームをつくる

プレイヤーは右(みぎ)へすすむようにするので、スタート地点(ちてん)から左(ひだり)へはいけないように、壁(かべ)をつくっておいてください。この壁(かべ)の線(せん)を背景(はいけい)とおなじ色(いろ)にしておくと、みえない壁(かべ)にすることができます。

ゴールのみぎがわにせんをえがく

以上(いじょう)で、プラットフォームのスプライトを用意(ようい)できました。

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

一般的(いっぱんてき)なプラットフォーマーでは、プレイヤーを重力(じゅうりょく)で下方向(したほうこう)へうごかし、プラットフォームにふれたらはねかえるようにします。一方(いっぽう)、360°プラットフォーマーでは、プレイヤーはうごかしません。プラットフォームを常(つね)に上方向(うえほうこう)へうごかし、プレイヤーにふれたらはねかえるようにします。

プレイヤーとプラットフォームの役割(やくわり)が逆(ぎゃく)になるだけで、上下(じょうげ)にうごかすかんがえかたは、一般的(いっぱんてき)なプラットフォーマーをつくるときとほぼおなじです。プラットフォーマーの基本的(きほんてき)なうごきは以下(いか)の記事(きじ)で解説(かいせつ)しているので参考(さんこう)にしてください。

スクラッチプログラミング - キャラクターをうごかす|ジャンプ・かべキック
Scratch (スクラッチ)で大人気(だいにんき)のゲーム、プラットフォーマーをつくるときにつかえる、ジャンプ、横(よこ)移動(いどう)、壁(かべ)キックのスクリプトを紹介(しょうかい)します。

プラットフォームの上下(じょうげ)のうごきを、ブロック定義(ていぎ)でまとめていきましょう。

  1. 上下(じょうげ)にうごかすというブロックを「画面(がめん)を再描画(さいびょうが)せずに実行(じっこう)する」にチェックをいれてつくります。
  2. 変数(へんすう) y速度(そくど) をつかって、だんだんはやく上(うえ)へうごくようにします。
へんすうのあたいをすこしずつかえて、たてへうごくりょうもへんすうにおうじてかえる

プレイヤーが地面(じめん)でとまるように、また、ジャンプしたときにプレイヤーの上(うえ)にあるプラットフォームをとおりぬけないようにします。y速度(そくど) がプラスかマイナスかで処理(しょり)をわけ、プレイヤーにふれたらはねかえるようにしましょう。

  1. プラットフォームが上(うえ)へうごいているなら、プレイヤーが地面(じめん)にうまらないようにします。
  2. プラットフォームが下(した)へうごいているなら、プレイヤーの上(うえ)にあるプラットフォームをとおりぬけないようにします。
  3. y速度(そくど)0 にして、プラットフォームのうごきをとめます。
プレイヤーにふれたらはねかえる

つづいては、ジャンプです。プレイヤーがジャンプできるのは地面(じめん)にふれているときだけにします。さきほど、プラットフォームはプレイヤーにふれるとはねかえるようにしたので、プレイヤーとプラットフォームは常(つね)にはなれている状態(じょうたい)です。次(つぎ)のようにブロックをつなげて、プレイヤーが地面(じめん)にふれてジャンプできるようにしましょう。

  1. プラットフォームを 1 上(うえ)にあげて、プレイヤーにふれるようにします。
  2. そのときにうわむき矢印(やじるし)キーがおされたら、プラットフォームを一気(いっき)に下(した)へさげて、プレイヤーがジャンプしたようにみせます。
  3. プラットフォームを -1 さげて、元(もと)の位置(いち)にもどします。
プレイヤーがジャンプする

以上(いじょう)で、プラットフォームの縦方向(たてほうこう)のうごきをあらわすブロック 上下(じょうげ)にうごかす を定義(ていぎ)できました。

回転(かいてん)させる

360°プラットフォーマーでは、プレイヤーを横(よこ)へうごかすのではなく、プラットフォームを回転(かいてん)させてプレイヤーがすすんでいるようにみせます。

プラットフォームが回転(かいてん)するうごきを、ブロック定義(ていぎ)でまとめていきましょう。

  1. 回転(かいてん)させる というブロックを「画面(がめん)を再描画(さいびょうが)せずに実行(じっこう)する」にチェックをいれてつくります。
  2. 左右(さゆう)の矢印(やじるし)キーで、プラットフォームを左(ひだり)または右(みぎ)へまわします。
  3. 変数(へんすう) 回転(かいてん)0.9 をかけて、なめらかに回転(かいてん)するようにします。
へんすうのあたいをすこしずつかえて、まわすりょうもへんすうにおうじてかえる

さて、ここからは、一般的(いっぱんてき)なプラットフォーマーにはないかんがえかたをしていきます。

  • たいらな地面(じめん)のプラットフォーマーでは、左右(さゆう)にうごかしているときにプラットフォームにふれたら壁(かべ)と判断(はんだん)し、はねかえるように横(よこ)へのうごきを逆(ぎゃく)にします。
  • 一方(いっぽう)で、360°プラットフォーマーの場合(ばあい)もおなじようにかんがえて回転(かいてん)を逆(ぎゃく)にすると、プレイヤーはそのばからうごけなくなってしまいます。
  • これは、地面(じめん)がたいらではないので、回転(かいてん)させるとすぐにプレイヤーにふれるからです。
  • 左右(さゆう)どちらのキーをおしてもすぐに「プレイヤーとプラットフォームがふれた → 逆回転(ぎゃくかいてん)」となり、プレイヤーはすすむことも、もどることもできなくなるのです。

360°プラットフォーマーでは、プラットフォームの回転(かいてん)、ひいてはプレイヤーのうごきを制御(せいぎょ)するために、次(つぎ)のようにかんがえます。

  • たいらではない地面(じめん)や丘(おか)などはすすめるけれど、壁(かべ)ではとまるようにします。
  • 変数(へんすう) 斜面(しゃめん) をつかって、ふれているのが「斜面(しゃめん)」か「壁(かべ)」かを判定(はんてい)します。

では、ブロックをつなげていきましょう。

  1. プレイヤーにふれたら、変数(へんすう) 斜面(しゃめん)0 にして、斜面(しゃめん)かどうかを判定(はんてい)する準備(じゅんび)をします。
  2. プラットフォームの位置(いち)を 1 ずつさげて、プレイヤーにふれていなければ斜面(しゃめん)と判断(はんだん)します。同時(どうじ)に、変数(へんすう) 斜面(しゃめん) の値(あたい)を 1 ふやします。プレイヤーにふれている場合(ばあい)は、これを最大(さいだい)5回(かい)までくりかえします。
しゃめんかどうかをはんていする

斜面(しゃめん) = ◯ にいれる数値(すうち)はおこのみです。たとえば 斜面(しゃめん) = 1 だと、斜面(しゃめん)をジリジリとすすみます。今回(こんかい)は山(やま)などもスムーズにのぼれるよう 斜面(しゃめん) = 5 にしました。ただ、数(かず)をおおきくしすぎると、ひくい壁(かべ)が斜面(しゃめん)と判断(はんだん)されてスッとのぼれてしまうので注意(ちゅうい)してください。

つづいては、壁(かべ)の場合(ばあい)です。

  1. プラットフォームの位置(いち)を 5 さげてもプレイヤーにふれているなら、壁(かべ)と判断(はんだん)します。
  2. プラットフォームを元(もと)の位置(いち)にもどします。
  3. 回転(かいてん)を逆(ぎゃく)にし、プレイヤーが壁(かべ)でとまるようにします。
かべではねかえるようにする

以上(いじょう)で、プレイヤーをすすめるためにプラットフォームをまわすブロック 回転(かいてん)させる を定義(ていぎ)できました。

リスポーンする

今回(こんかい)つくるゲームは、操作(そうさ)に失敗(しっぱい)しても何度(なんど)でもやりなおせるようにします。そのために、緑(みどり)の旗(はた)をおしたときではなく、メッセージでゲームを開始(かいし)するようにしましょう。

  1. 緑(みどり)の旗(はた)がおされたとき、メッセージをおくります。
  2. メッセージをうけとったとき、ゲームを最初(さいしょ)の状態(じょうたい)にします。
  3. プラットフォームをうごかせるようにします。
メッセージでゲームがスタートする

これで、プラットフォームのスクリプトは完成(かんせい)です。

プレイヤーのスクリプト

ここからは、プレイヤーのスクリプトをつくっていきましょう。プレイヤーのうごきも、緑(みどり)の旗(はた)をおしたときではなく、メッセージをうけとったときに開始(かいし)です。

  1. 最初(さいしょ)の位置(いち)をきめます。
  2. リスポーンするときに、みためを変化(へんか)させて、プレイヤーが出現(しゅつげん)する様子(ようす)を表現(ひょうげん)します。
ゲームがスタートするときのいちとみためをしていする

障害物(しょうがいぶつ)にあたったかどうか、ゴールについたかどうかは、プラットフォームではなくプレイヤーのほうで判定(はんてい)します。

  1. 障害物(しょうがいぶつ)にあたったら、メッセージをおくってリスポーンします。
  2. ゴールについたら、ゴールのメッセージをおくります。
いろであたりはんていをする

以上(いじょう)でプレイヤーのスクリプトは完成(かんせい)です!といいたいところですが、実(じつ)は、このあたり判定(はんてい)は機能(きのう)しません。その理由(りゆう)は、さきほどつくったブロック 回転(かいてん)させる で、斜面(しゃめん)か壁(かべ)かを判定(はんてい)するために、プラットフォームの位置(いち)をさげてプレイヤーからはなれるようにしたからです。

プレイヤーが色(いろ)にふれることを確認(かくにん)できるようにするために、次(つぎ)のようにブロックを追加(ついか)しましょう。

  1. プレイヤーの位置(いち)をさげて、プラットフォームにふれるようにします。こうすると、あたり判定(はんてい)が可能(かのう)になります。
  2. 元(もと)の位置(いち)にもどします。
プレイヤーのいちをへんかさせる

今回(こんかい)は、斜面(しゃめん)か壁(かべ)かを判定(はんてい)するときに、プラットフォームの位置(いち)を 5 までさげるようにしたので、ここでもプレイヤーの y 座標(ざひょう)を 5 変化(へんか)させて、プラットフォームにふれるようにしています。

プレイヤーのスクリプトは以上(いじょう)です。

ゴールのスクリプト

最後(さいご)に、ゴールしたときに表示(ひょうじ)するスプライトと、そのスクリプトをつくりましょう。

ゴールしたらひょうじするスプライト
  1. リスポーンするときは非表示(ひひょうじ)です。
  2. ゴールのメッセージをうけとったら表示(ひょうじ)して、ゲームをおわりにします。
メッセージにおうじてひょうじ、またはひひょうじにする

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

360°プラットフォーマーの完成(かんせい)です。

プラットフォームのスクリプト
プレイヤーのスクリプト
ゴールのスクリプト

Scratch の Pyxofy ページへいって、実際(じっさい)に360°プラットフォーマーであそんでみてくださいね。Scratch 360°プラットフォーマー by Pyxofy

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

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

詳細はこちら

まとめ

今回(こんかい)は、Scratch で360°プラットフォーマーをつくりました。

たいらな地面(じめん)のプラットフォーマーとくらべると、おおきくちがう点(てん)は次(つぎ)のようになります。

  • うごかすのは、プレイヤーではなくプラットフォーム。
  • プレイヤーをすすめるためには x 座標(ざひょう)をかえるのではなく、プラットフォームのむきをかえて回転(かいてん)させることで、プレイヤーが左右(さゆう)にうごいているようにみせる。
  • 横方向(よこほうこう)のあたり判定(はんてい)では、プラットフォームの y 座標(ざひょう)を変化(へんか)させ、斜面(しゃめん)か壁(かべ)かによってうごきをわける。
  • 障害物(しょうがいぶつ)などへのあたり判定(はんてい)は、プレイヤーの y 座標(ざひょう)を変化(へんか)させておこなう。

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

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

関連記事

スクラッチプログラミング - くるまをうんてんするゲームのつくりかた
車(くるま)をうごかして駐車場(ちゅうしゃじょう)にとめるゲームをつくってみましょう。やじるしキーで車(くるま)を操作(そうさ)して、失敗(しっぱい)しても、くりかえしやりなおせるようにプログラミングします。
JavaScript - ボタンを押して表示を切り替える方法
ボタンをクリックしてコンテンツの表示 / 非表示を切り替えたり、ウェブページの表示をダークモードにする方法を解説します。CSS に切り替えたいクラスを追加して toggle() メソッドで切り替えるだけなので簡単です。
CSS Art – How to Make a 3D Cube With CSS
Why settle for two dimensions when you can have three? Learn how to make a three-dimensional CSS cube and then rotate it into multiple angles.
CSS Animation – @property Linear Gradient Rotate Animation with cubic-bezier()
Yes, CSS linear gradients can be rotated! Join us in this step-by-step article to learn how to animate multicolor shapes with CSS @property.