スクラッチプログラミング - 360°プラットフォーマー
回転(かいてん)するプラットフォームゲーム
この記事(きじ)では、Scratch (スクラッチ)でつくる360°プラットフォーマーのスクリプトを解説(かいせつ)します。
360°プラットフォーマーは、そのなのとおり、ひとつのプラットフォームを360°回転(かいてん)させてあそぶゲームです。たいらな地面(じめん)のプラットフォーマーとくらべると、プラットフォームのうごかしかたや、あたり判定(はんてい)のかんがえかたなど、いくつかちがいがあります。
「一般的(いっぱんてき)なプラットフォーマーはもうつくれるよ」というかたは、ぜひ一緒(いっしょ)に、360°プラットフォーマーづくりにチャレンジしてみましょう。
サンプルプロジェクト
下(した)にあるのは、360°回転(かいてん)するプラットフォーマーのサンプルプロジェクトです。うごいているのは、プレイヤーではなくプラットフォームです。記事(きじ)をよみすすめる前(まえ)に、プラットフォームのうごきをみておいてください。
プレイヤーを用意(ようい)しよう
最初(さいしょ)に、プレイヤーのスプライトを用意(ようい)しましょう。ここでは、プレイヤーとしてつかう角丸(かどまる)四角(しかく)のつくりかたを説明(せつめい)します。
キャンバスの目(め)にあわせて、四角(しかく)をえがいてください。そして、四角(しかく)の角(かど)から1マスめのところを、形(かたち)をかえる矢印(やじるし)で8箇所(かしょ)クリックします。
形(かたち)をかえる矢印(やじるし)で、四角(しかく)の角(かど)を選択(せんたく)し削除(さくじょ)すると、角丸(かどまる)四角(しかく)になります。
プレイヤーは、x 座標(ざひょう) 0
、y 座標(ざひょう) 0
の位置(いち)に表示(ひょうじ)しておいてください。
プラットフォームを用意(ようい)しよう
次(つぎ)に、プラットフォームをつくりましょう。360°プラットフォーマーでは、地面(じめん)は平(たいら)ではなく、円形(えんけい)です。
おおきく表示(ひょうじ)する - サイズハック
ステージの横幅(よこはば)いっぱいに表示(ひょうじ)されるよう、プラットフォームのサイズをおおきくしましょう。
ステージ下(した)の「おおきさ」、またはブロックパレットにある おおきさを ◯ %にする
におこのみの数値(すうち)を入力(にゅうりょく)してブロックをクリックしてください。
入力(にゅうりょく)した数値(すうち)までおおきくなりましたか?場合(ばあい)によっては、指定(してい)したとおりにおおきくならないことがあります。その理由(りゆう)は、スプライトをどれだけ拡大(かくだい)できるかの限度(げんど)があるからです。
おもったようにサイズがおおきくならない場合(ばあい)は、次(つぎ)の方法(ほうほう)をためしてみてください!
まずは、空白(くうはく)のコスチュームを追加(ついか)します。空白(くうはく)のコスチュームにはサイズの限度(げんど)がないので、これを拡大用(かくだいよう)としてつかっていきます。
そして、ブロックを下(した)のようにつなげましょう。最初(さいしょ)に拡大用(かくだいよう)のコスチュームでおおきさを指定(してい)しておくと、プラットフォームのコスチュームにきりかえても、そのおおきさで表示(ひょうじ)することができます。
障害物(しょうがいぶつ)などをえがく
プラットフォームに、障害物(しょうがいぶつ)やゴール、壁(かべ)や丘(おか)などを追加(ついか)しましょう。
プレイヤーは右(みぎ)へすすむようにするので、スタート地点(ちてん)から左(ひだり)へはいけないように、壁(かべ)をつくっておいてください。この壁(かべ)の線(せん)を背景(はいけい)とおなじ色(いろ)にしておくと、みえない壁(かべ)にすることができます。
以上(いじょう)で、プラットフォームのスプライトを用意(ようい)できました。
上下(じょうげ)にうごかす
一般的(いっぱんてき)なプラットフォーマーでは、プレイヤーを重力(じゅうりょく)で下方向(したほうこう)へうごかし、プラットフォームにふれたらはねかえるようにします。一方(いっぽう)、360°プラットフォーマーでは、プレイヤーはうごかしません。プラットフォームを常(つね)に上方向(うえほうこう)へうごかし、プレイヤーにふれたらはねかえるようにします。
プレイヤーとプラットフォームの役割(やくわり)が逆(ぎゃく)になるだけで、上下(じょうげ)にうごかすかんがえかたは、一般的(いっぱんてき)なプラットフォーマーをつくるときとほぼおなじです。プラットフォーマーの基本的(きほんてき)なうごきは以下(いか)の記事(きじ)で解説(かいせつ)しているので参考(さんこう)にしてください。
プラットフォームの上下(じょうげ)のうごきを、ブロック定義(ていぎ)でまとめていきましょう。
- 上下(じょうげ)にうごかすというブロックを「画面(がめん)を再描画(さいびょうが)せずに実行(じっこう)する」にチェックをいれてつくります。
- 変数(へんすう)
y速度(そくど)
をつかって、だんだんはやく上(うえ)へうごくようにします。
プレイヤーが地面(じめん)でとまるように、また、ジャンプしたときにプレイヤーの上(うえ)にあるプラットフォームをとおりぬけないようにします。y速度(そくど)
がプラスかマイナスかで処理(しょり)をわけ、プレイヤーにふれたらはねかえるようにしましょう。
- プラットフォームが上(うえ)へうごいているなら、プレイヤーが地面(じめん)にうまらないようにします。
- プラットフォームが下(した)へうごいているなら、プレイヤーの上(うえ)にあるプラットフォームをとおりぬけないようにします。
y速度(そくど)
を0
にして、プラットフォームのうごきをとめます。
つづいては、ジャンプです。プレイヤーがジャンプできるのは地面(じめん)にふれているときだけにします。さきほど、プラットフォームはプレイヤーにふれるとはねかえるようにしたので、プレイヤーとプラットフォームは常(つね)にはなれている状態(じょうたい)です。次(つぎ)のようにブロックをつなげて、プレイヤーが地面(じめん)にふれてジャンプできるようにしましょう。
- プラットフォームを
1
上(うえ)にあげて、プレイヤーにふれるようにします。 - そのときにうわむき矢印(やじるし)キーがおされたら、プラットフォームを一気(いっき)に下(した)へさげて、プレイヤーがジャンプしたようにみせます。
- プラットフォームを
-1
さげて、元(もと)の位置(いち)にもどします。
以上(いじょう)で、プラットフォームの縦方向(たてほうこう)のうごきをあらわすブロック 上下(じょうげ)にうごかす
を定義(ていぎ)できました。
回転(かいてん)させる
360°プラットフォーマーでは、プレイヤーを横(よこ)へうごかすのではなく、プラットフォームを回転(かいてん)させてプレイヤーがすすんでいるようにみせます。
プラットフォームが回転(かいてん)するうごきを、ブロック定義(ていぎ)でまとめていきましょう。
回転(かいてん)させる
というブロックを「画面(がめん)を再描画(さいびょうが)せずに実行(じっこう)する」にチェックをいれてつくります。- 左右(さゆう)の矢印(やじるし)キーで、プラットフォームを左(ひだり)または右(みぎ)へまわします。
- 変数(へんすう)
回転(かいてん)
に0.9
をかけて、なめらかに回転(かいてん)するようにします。
さて、ここからは、一般的(いっぱんてき)なプラットフォーマーにはないかんがえかたをしていきます。
- たいらな地面(じめん)のプラットフォーマーでは、左右(さゆう)にうごかしているときにプラットフォームにふれたら壁(かべ)と判断(はんだん)し、はねかえるように横(よこ)へのうごきを逆(ぎゃく)にします。
- 一方(いっぽう)で、360°プラットフォーマーの場合(ばあい)もおなじようにかんがえて回転(かいてん)を逆(ぎゃく)にすると、プレイヤーはそのばからうごけなくなってしまいます。
- これは、地面(じめん)がたいらではないので、回転(かいてん)させるとすぐにプレイヤーにふれるからです。
- 左右(さゆう)どちらのキーをおしてもすぐに「プレイヤーとプラットフォームがふれた → 逆回転(ぎゃくかいてん)」となり、プレイヤーはすすむことも、もどることもできなくなるのです。
360°プラットフォーマーでは、プラットフォームの回転(かいてん)、ひいてはプレイヤーのうごきを制御(せいぎょ)するために、次(つぎ)のようにかんがえます。
- たいらではない地面(じめん)や丘(おか)などはすすめるけれど、壁(かべ)ではとまるようにします。
- 変数(へんすう)
斜面(しゃめん)
をつかって、ふれているのが「斜面(しゃめん)」か「壁(かべ)」かを判定(はんてい)します。
では、ブロックをつなげていきましょう。
- プレイヤーにふれたら、変数(へんすう)
斜面(しゃめん)
を0
にして、斜面(しゃめん)かどうかを判定(はんてい)する準備(じゅんび)をします。 - プラットフォームの位置(いち)を
1
ずつさげて、プレイヤーにふれていなければ斜面(しゃめん)と判断(はんだん)します。同時(どうじ)に、変数(へんすう)斜面(しゃめん)
の値(あたい)を1
ふやします。プレイヤーにふれている場合(ばあい)は、これを最大(さいだい)5回(かい)までくりかえします。
斜面(しゃめん) = ◯
にいれる数値(すうち)はおこのみです。たとえば 斜面(しゃめん) = 1
だと、斜面(しゃめん)をジリジリとすすみます。今回(こんかい)は山(やま)などもスムーズにのぼれるよう 斜面(しゃめん) = 5
にしました。ただ、数(かず)をおおきくしすぎると、ひくい壁(かべ)が斜面(しゃめん)と判断(はんだん)されてスッとのぼれてしまうので注意(ちゅうい)してください。
つづいては、壁(かべ)の場合(ばあい)です。
- プラットフォームの位置(いち)を
5
さげてもプレイヤーにふれているなら、壁(かべ)と判断(はんだん)します。 - プラットフォームを元(もと)の位置(いち)にもどします。
- 回転(かいてん)を逆(ぎゃく)にし、プレイヤーが壁(かべ)でとまるようにします。
以上(いじょう)で、プレイヤーをすすめるためにプラットフォームをまわすブロック 回転(かいてん)させる
を定義(ていぎ)できました。
リスポーンする
今回(こんかい)つくるゲームは、操作(そうさ)に失敗(しっぱい)しても何度(なんど)でもやりなおせるようにします。そのために、緑(みどり)の旗(はた)をおしたときではなく、メッセージでゲームを開始(かいし)するようにしましょう。
- 緑(みどり)の旗(はた)がおされたとき、メッセージをおくります。
- メッセージをうけとったとき、ゲームを最初(さいしょ)の状態(じょうたい)にします。
- プラットフォームをうごかせるようにします。
これで、プラットフォームのスクリプトは完成(かんせい)です。
Become a Pyxofy Member
最新記事をメールで受信 Pyxofy メンバー限定公開記事が読み放題
いつでも登録解除できます。スパムメールは送りません。
プレイヤーのスクリプト
ここからは、プレイヤーのスクリプトをつくっていきましょう。プレイヤーのうごきも、緑(みどり)の旗(はた)をおしたときではなく、メッセージをうけとったときに開始(かいし)です。
- 最初(さいしょ)の位置(いち)をきめます。
- リスポーンするときに、みためを変化(へんか)させて、プレイヤーが出現(しゅつげん)する様子(ようす)を表現(ひょうげん)します。
障害物(しょうがいぶつ)にあたったかどうか、ゴールについたかどうかは、プラットフォームではなくプレイヤーのほうで判定(はんてい)します。
- 障害物(しょうがいぶつ)にあたったら、メッセージをおくってリスポーンします。
- ゴールについたら、ゴールのメッセージをおくります。
以上(いじょう)でプレイヤーのスクリプトは完成(かんせい)です!といいたいところですが、実(じつ)は、このあたり判定(はんてい)は機能(きのう)しません。その理由(りゆう)は、さきほどつくったブロック 回転(かいてん)させる
で、斜面(しゃめん)か壁(かべ)かを判定(はんてい)するために、プラットフォームの位置(いち)をさげてプレイヤーからはなれるようにしたからです。
プレイヤーが色(いろ)にふれることを確認(かくにん)できるようにするために、次(つぎ)のようにブロックを追加(ついか)しましょう。
- プレイヤーの位置(いち)をさげて、プラットフォームにふれるようにします。こうすると、あたり判定(はんてい)が可能(かのう)になります。
- 元(もと)の位置(いち)にもどします。
今回(こんかい)は、斜面(しゃめん)か壁(かべ)かを判定(はんてい)するときに、プラットフォームの位置(いち)を 5
までさげるようにしたので、ここでもプレイヤーの y 座標(ざひょう)を 5
変化(へんか)させて、プラットフォームにふれるようにしています。
プレイヤーのスクリプトは以上(いじょう)です。
ゴールのスクリプト
最後(さいご)に、ゴールしたときに表示(ひょうじ)するスプライトと、そのスクリプトをつくりましょう。
- リスポーンするときは非表示(ひひょうじ)です。
- ゴールのメッセージをうけとったら表示(ひょうじ)して、ゲームをおわりにします。
スクリプト完成(かんせい)
360°プラットフォーマーの完成(かんせい)です。
Scratch の Pyxofy ページへいって、実際(じっさい)に360°プラットフォーマーであそんでみてくださいね。Scratch 360°プラットフォーマー by Pyxofy
Pyxofy (著)「きょうからはじめるスクラッチプログラミング入門」
Pyxofy が Scratch の電子書籍を出版しました!Kindle・Apple Books からご購入ください。
まとめ
今回(こんかい)は、Scratch で360°プラットフォーマーをつくりました。
たいらな地面(じめん)のプラットフォーマーとくらべると、おおきくちがう点(てん)は次(つぎ)のようになります。
- うごかすのは、プレイヤーではなくプラットフォーム。
- プレイヤーをすすめるためには x 座標(ざひょう)をかえるのではなく、プラットフォームのむきをかえて回転(かいてん)させることで、プレイヤーが左右(さゆう)にうごいているようにみせる。
- 横方向(よこほうこう)のあたり判定(はんてい)では、プラットフォームの y 座標(ざひょう)を変化(へんか)させ、斜面(しゃめん)か壁(かべ)かによってうごきをわける。
- 障害物(しょうがいぶつ)などへのあたり判定(はんてい)は、プレイヤーの y 座標(ざひょう)を変化(へんか)させておこなう。
最後まで読んでいただき、ありがとうございます。この記事をシェアしてくれると嬉しいです!
SNS で Pyxofy とつながりましょう! LinkedIn・ Threads・Bluesky・ Mastodon・ X (Twitter) @pyxofy・ Facebook
Pyxofy 新規メンバー登録
最新記事をメールで受信 Pyxofy メンバー限定公開コンテンツにアクセス
いつでも登録解除できます。スパムメールは送りません。