横スクロールアクションゲームを作ろう!
★★☆(ちゅうきゅう)完成したゲームがこちら。旗を押してスタート!矢印キーで操作するよ。
これから、このゲームを一歩ずつ作っていくよ。
スプライトライブラリから 「Ben」 を選んで追加しよう。名前を 「男の子」 に変えよう。
スプライト一覧の右下にあるボタンから 「Ben」 を探して追加し、名前を「男の子」に変えよう。
@greenFlag が押されたとき
[重力 v] を [0] にする
大きさを (50) %にする
x座標を (-180) 、y座標を (0) にする
回転方法を [left-right v] にする
新しいスプライトを「描く」で追加しよう。
「描く」を選んで、コスチュームエディタで地面や足場を描こう。名前を 「ステージ」 に変えよう。コスチュームの名前は 「ステージ1」 にしよう。
四角形ツールで 地面 と 足場 を描こう。色は好きな色でOK!
@greenFlag が押されたとき
x座標を (0) 、y座標を (0) にする
コスチュームを [ステージ1 v] にする
「ずっと」のループの中に、矢印キーで左右に動くプログラムを追加しよう。
男の子の完成プログラム(この時点):
@greenFlag が押されたとき
[重力 v] を [0] にする
大きさを (50) %にする
x座標を (-180) 、y座標を (0) にする
回転方法を [left-right v] にする
ずっと
もし <[right arrow v] キーが押された> なら
(90) 度に向ける
x座標を (10) ずつ変える
end
もし <[left arrow v] キーが押された> なら
(-90) 度に向ける
x座標を (-10) ずつ変える
end
end
いまのプログラムだと、ステージの地面や壁にめりこんでしまう。「もしステージに触れたなら、元に戻す」を追加しよう。
追加したのはこの部分(右移動と左移動のそれぞれに追加するよ):
もし <[ステージ v] に触れた> なら
x座標を (-10) ずつ変える
end
もし <[ステージ v] に触れた> なら
x座標を (10) ずつ変える
end
男の子の完成プログラム(この時点):
@greenFlag が押されたとき
[重力 v] を [0] にする
大きさを (50) %にする
x座標を (-180) 、y座標を (0) にする
回転方法を [left-right v] にする
ずっと
もし <[right arrow v] キーが押された> なら
(90) 度に向ける
x座標を (10) ずつ変える
もし <[ステージ v] に触れた> なら
x座標を (-10) ずつ変える
end
end
もし <[left arrow v] キーが押された> なら
(-90) 度に向ける
x座標を (-10) ずつ変える
もし <[ステージ v] に触れた> なら
x座標を (10) ずつ変える
end
end
end
変数 「重力」 を使って、キャラクターが自然に落下するようにしよう。
「ずっと」の中に、重力のプログラムを追加しよう(移動のプログラムの後に入れるよ)。
追加したのはこの部分:
[重力 v] を (-1) ずつ変える
y座標を (重力) ずつ変える
もし <[ステージ v] に触れた> なら
y座標を (((重力) * (-1))) ずつ変える
[重力 v] を [0] にする
end
男の子の完成プログラム(この時点):
@greenFlag が押されたとき
[重力 v] を [0] にする
大きさを (50) %にする
x座標を (-180) 、y座標を (0) にする
回転方法を [left-right v] にする
ずっと
もし <[right arrow v] キーが押された> なら
(90) 度に向ける
x座標を (10) ずつ変える
もし <[ステージ v] に触れた> なら
x座標を (-10) ずつ変える
end
end
もし <[left arrow v] キーが押された> なら
(-90) 度に向ける
x座標を (-10) ずつ変える
もし <[ステージ v] に触れた> なら
x座標を (10) ずつ変える
end
end
[重力 v] を (-1) ずつ変える
y座標を (重力) ずつ変える
もし <[ステージ v] に触れた> なら
y座標を (((重力) * (-1))) ずつ変える
[重力 v] を [0] にする
end
end
地面に立っているときに上矢印キーを押すと、ジャンプできるようにしよう。
重力の後に、ジャンプの仕組みを追加しよう。y座標を -1 して地面チェックし、上矢印で重力を 15 にする!
追加したのはこの部分:
y座標を (-1) ずつ変える
もし <[ステージ v] に触れた> なら
もし <[up arrow v] キーが押された> なら
[Jump v] の音を鳴らす
[重力 v] を [15] にする
end
end
y座標を (1) ずつ変える
男の子の完成プログラム(この時点):
@greenFlag が押されたとき
[重力 v] を [0] にする
大きさを (50) %にする
x座標を (-180) 、y座標を (0) にする
回転方法を [left-right v] にする
ずっと
もし <[right arrow v] キーが押された> なら
(90) 度に向ける
x座標を (10) ずつ変える
もし <[ステージ v] に触れた> なら
x座標を (-10) ずつ変える
end
end
もし <[left arrow v] キーが押された> なら
(-90) 度に向ける
x座標を (-10) ずつ変える
もし <[ステージ v] に触れた> なら
x座標を (10) ずつ変える
end
end
[重力 v] を (-1) ずつ変える
y座標を (重力) ずつ変える
もし <[ステージ v] に触れた> なら
y座標を (((重力) * (-1))) ずつ変える
[重力 v] を [0] にする
end
y座標を (-1) ずつ変える
もし <[ステージ v] に触れた> なら
もし <[up arrow v] キーが押された> なら
[Jump v] の音を鳴らす
[重力 v] を [15] にする
end
end
y座標を (1) ずつ変える
end
プログラムが長くなってきたね。「定義ブロック」を使って、「移動」と「重力」に分けて整理しよう。
「ブロック定義」から 「ブロックを作る」 を選んで、「移動」 と 「重力」 の2つの定義ブロックを作ろう。
メインのスクリプト(シンプルになった!):
@greenFlag が押されたとき
[重力 v] を [0] にする
大きさを (50) %にする
x座標を (-180) 、y座標を (0) にする
回転方法を [left-right v] にする
ずっと
移動 :: custom
重力 :: custom
end
定義「移動」:
定義 移動
もし <[right arrow v] キーが押された> なら
(90) 度に向ける
x座標を (10) ずつ変える
もし <[ステージ v] に触れた> なら
x座標を (-10) ずつ変える
end
end
もし <[left arrow v] キーが押された> なら
(-90) 度に向ける
x座標を (-10) ずつ変える
もし <[ステージ v] に触れた> なら
x座標を (10) ずつ変える
end
end
定義「重力」:
定義 重力
[重力 v] を (-1) ずつ変える
y座標を (重力) ずつ変える
もし <[ステージ v] に触れた> なら
y座標を (((重力) * (-1))) ずつ変える
[重力 v] を [0] にする
end
y座標を (-1) ずつ変える
もし <[ステージ v] に触れた> なら
もし <[up arrow v] キーが押された> なら
[Jump v] の音を鳴らす
[重力 v] を [15] にする
end
end
y座標を (1) ずつ変える
画面の右端まで歩いたら、次のステージに進むようにしよう。変数 「ステージ」 を作ろう。
もうひとつ 「旗が押されたとき」 のスクリプトを作ろう。右端(x座標 > 220)に着いたら次のステージに進むよ。
@greenFlag が押されたとき
[ステージ v] を [1] にする
ずっと
もし <(220) < [(x座標)]> なら
x座標を (-230) 、y座標を (0) にする
[ステージ v] を (1) ずつ変える
end
end
ステージのスクリプトも変えよう:
@greenFlag が押されたとき
x座標を (0) 、y座標を (0) にする
コスチュームを [ステージ1 v] にする
ずっと
もし <(ステージ) = [1]> なら
コスチュームを [ステージ v] にする
end
もし <(ステージ) = [2]> なら
コスチュームを [ステージ v] にする
end
もし <(ステージ) = [3]> なら
コスチュームを [ステージ v] にする
end
end
ステージのスプライトに、新しいコスチュームを追加して、ステージ2とステージ3を描こう。
コスチュームタブを開いて、左下の「描く」ボタンから新しいコスチュームを2つ追加しよう。
コスチューム名を 「ステージ2」「ステージ3」 にして、それぞれ違う地形を描こう。
ステージ1〜3で、操作方法などのチュートリアル(ご案内)を表示しよう。
「描く」で新しいスプライトを作って、名前を 「ご案内」 にしよう。コスチュームを3つ作り(ステージ1、ステージ2、ステージ3)、それぞれ操作方法を書こう。
@greenFlag が押されたとき
x座標を (0) 、y座標を (0) にする
コスチュームを [ステージ1 v] にする
ずっと
もし <(ステージ) = [1]> なら
表示する
コスチュームを [ステージ v] にする
でなければ
もし <(ステージ) = [2]> なら
コスチュームを [ステージ v] にする
でなければ
もし <(ステージ) = [3]> なら
コスチュームを [ステージ v] にする
でなければ
隠す
end
end
end
end
ステージ3に、左右に往復する カニ の敵を作ろう!
スプライトライブラリから 「Crab」 を探して追加し、名前を 「カニ」 にしよう。
スクリプト1(表示/非表示):
@greenFlag が押されたとき
大きさを (45) %にする
x座標を (180) 、y座標を (-125) にする
隠す
ずっと
もし <(ステージ) = [3]> なら
表示する
でなければ
隠す
end
end
スクリプト2(左右移動):
@greenFlag が押されたとき
ずっと
もし <(ステージ) = [3]> なら
x座標を (180) 、y座標を (-125) にする
(45) 回繰り返す
x座標を (-3) ずつ変える
end
(45) 回繰り返す
x座標を (3) ずつ変える
end
end
end
カニに触れたら、「Pew」の音を鳴らしてスタート位置に戻るようにしよう。
ステージ進行のスクリプト(旗が押されたとき その2)に、カニとの当たり判定を追加しよう。
追加したのはこの部分:
もし <[カニ v] に触れた> なら
[Pew v] の音を鳴らす
x座標を (-230) 、y座標を (0) にする
end
男の子のスクリプト2 の完成プログラム(この時点):
@greenFlag が押されたとき
[ステージ v] を [1] にする
ずっと
もし <(220) < [(x座標)]> なら
x座標を (-230) 、y座標を (0) にする
[ステージ v] を (1) ずつ変える
end
もし <[カニ v] に触れた> なら
[Pew v] の音を鳴らす
x座標を (-230) 、y座標を (0) にする
end
end
ステージ4に、下から上に飛んでくるロケットの敵を作ろう!
スプライトライブラリから 「Rocketship」 を探して追加し、名前を 「ロケット」 にしよう。
スクリプト1(表示/非表示):
@greenFlag が押されたとき
大きさを (45) %にする
x座標を (0) 、y座標を (-180) にする
隠す
ずっと
もし <(ステージ) = [4]> なら
表示する
でなければ
隠す
end
end
スクリプト2(上に飛ぶ動き):
@greenFlag が押されたとき
ずっと
もし <(ステージ) = [4]> なら
x座標を (0) 、y座標を (-180) にする
<(170) < [(y座標)]> まで繰り返す
y座標を (10) ずつ変える
end
end
end
男の子のスクリプト2 にロケットの当たり判定も追加しよう:
追加したのはこの部分:
もし <[ロケット v] に触れた> なら
[Pew v] の音を鳴らす
x座標を (-230) 、y座標を (0) にする
end
ステージ5に、右から左にランダムな高さで飛んでくるコウモリを作ろう!
スプライトライブラリから 「Bat」 を探して追加し、名前を 「コウモリ」 にしよう。
スクリプト1(表示/非表示):
@greenFlag が押されたとき
大きさを (45) %にする
x座標を (240) 、y座標を (-180) にする
隠す
ずっと
もし <(ステージ) = [5]> なら
表示する
でなければ
隠す
end
end
スクリプト2(右から左に飛ぶ動き):
@greenFlag が押されたとき
ずっと
もし <(ステージ) = [5]> なら
x座標を (240) 、y座標を (((-100) から (50) までの乱数)) にする
<((x座標)) < [-220]> まで繰り返す
x座標を (-10) ずつ変える
end
end
end
男の子のスクリプト2 にコウモリの当たり判定も追加しよう:
追加したのはこの部分:
もし <[コウモリ v] に触れた> なら
[Pew v] の音を鳴らす
x座標を (-230) 、y座標を (0) にする
end
ステージ6に、触れるとスタートに戻されるトゲを作ろう!
「描く」で新しいスプライトを作って、名前を 「トゲ」 にしよう。三角形やギザギザを描いてトゲっぽくしよう。
@greenFlag が押されたとき
x座標を (0) 、y座標を (0) にする
隠す
ずっと
もし <(ステージ) = [6]> なら
表示する
でなければ
隠す
end
end
男の子のスクリプト2 にトゲの当たり判定も追加しよう:
追加したのはこの部分:
もし <[トゲ v] に触れた> なら
[Pew v] の音を鳴らす
x座標を (-230) 、y座標を (0) にする
end
男の子のスクリプト2 の完成プログラム(この時点):
@greenFlag が押されたとき
[ステージ v] を [1] にする
ずっと
もし <(220) < [(x座標)]> なら
x座標を (-230) 、y座標を (0) にする
[ステージ v] を (1) ずつ変える
end
もし <[カニ v] に触れた> なら
[Pew v] の音を鳴らす
x座標を (-230) 、y座標を (0) にする
end
もし <[ロケット v] に触れた> なら
[Pew v] の音を鳴らす
x座標を (-230) 、y座標を (0) にする
end
もし <[コウモリ v] に触れた> なら
[Pew v] の音を鳴らす
x座標を (-230) 、y座標を (0) にする
end
もし <[トゲ v] に触れた> なら
[Pew v] の音を鳴らす
x座標を (-230) 、y座標を (0) にする
end
end
ステージのスプライトに、コスチュームを3つ追加して、ステージ4・5・6を描こう。
コスチュームタブで「描く」から新しいコスチュームを追加し、名前を 「ステージ4」「ステージ5」「ステージ6」 にしよう。
それぞれの敵や障害物に合わせた地形を工夫して描こう。
ステージのスクリプトに、ステージ4〜6の分も追加しよう。
追加したのはこの部分(ずっとの中に追加):
もし <(ステージ) = [4]> なら
コスチュームを [ステージ v] にする
end
もし <(ステージ) = [5]> なら
コスチュームを [ステージ v] にする
end
もし <(ステージ) = [6]> なら
コスチュームを [ステージ v] にする
end
ステージ7に、触れると取れるコインを作ろう!
「描く」で新しいスプライトを作って、名前を 「コイン」 にしよう。丸い黄色のコインを描こう。
@greenFlag が押されたとき
x座標を (0) 、y座標を (0) にする
隠す
ずっと
もし <(ステージ) = [7]> なら
表示する
もし <[男の子 v] に触れた> なら
[Coin v] の音を鳴らす
隠す
<(ステージ) = [8]> まで待つ
end
でなければ
隠す
end
end
ステージ8に、触れるとオンになるスイッチを作ろう!スイッチを押すと道が開く仕組みだよ。
スプライトライブラリから 「Key」 を探して追加し、名前を 「スイッチ」 にしよう。変数 「スイッチ」 も作ろう。
@greenFlag が押されたとき
[スイッチ v] を [オフ] にする
x座標を (-195) 、y座標を (120) にする
大きさを (80) %にする
隠す
ずっと
もし <(ステージ) = [8]> なら
もし <(スイッチ) = [オフ]> なら
表示する
もし <[男の子 v] に触れた> なら
[Connect v] の音を鳴らす
[スイッチ v] を [オン] にする
[ステージ v] を (1) ずつ変える
隠す
end
end
でなければ
[スイッチ v] を [オフ] にする
隠す
end
end
ステージのスクリプトもステージ8用に変えよう:
ステージ8では、スイッチがオンになるまで待って、コスチュームを切り替えるよ。
もし <(ステージ) = [7]> なら
コスチュームを [ステージ v] にする
end
もし <(ステージ) = [8]> なら
コスチュームを [ステージ8 v] にする
<(スイッチ) = [オン]> まで待つ
コスチュームを [ステージ9 v] にする
end
ステージのスプライトに、ステージ7〜9とクリア画面のコスチュームを追加しよう。
コスチュームタブで「描く」から新しいコスチュームを追加しよう。
ステージのスクリプトに、クリアの処理を追加しよう。
追加したのはこの部分(ずっとの中に追加):
もし <(ステージ) = [10]> なら
コスチュームを [クリア v] にする
[Win v] の音を鳴らして終わるまで待つ
このスクリプトを止める
end
ステージの完成プログラム:
@greenFlag が押されたとき
x座標を (0) 、y座標を (0) にする
コスチュームを [ステージ1 v] にする
ずっと
もし <(ステージ) = [1]> なら
コスチュームを [ステージ v] にする
end
もし <(ステージ) = [2]> なら
コスチュームを [ステージ v] にする
end
もし <(ステージ) = [3]> なら
コスチュームを [ステージ v] にする
end
もし <(ステージ) = [4]> なら
コスチュームを [ステージ v] にする
end
もし <(ステージ) = [5]> なら
コスチュームを [ステージ v] にする
end
もし <(ステージ) = [6]> なら
コスチュームを [ステージ v] にする
end
もし <(ステージ) = [7]> なら
コスチュームを [ステージ v] にする
end
もし <(ステージ) = [8]> なら
コスチュームを [ステージ8 v] にする
<(スイッチ) = [オン]> まで待つ
コスチュームを [ステージ9 v] にする
end
もし <(ステージ) = [10]> なら
コスチュームを [クリア v] にする
[Win v] の音を鳴らして終わるまで待つ
このスクリプトを止める
end
end
アクションゲームをもっとパワーアップさせよう!