Arcadeとは?
マイクロソフトが運営するMakecodeというプログラミング開発環境のひとつで
Arcadeのページにアクセスし、ブラウザ上でプログラミングを行うことができます。
命令はブロックになっていて、それを組み合わせてプログラムすることができます。また、ブロックからJavaScript(TypeScript)やPythonに切り替えることもできます。
Scratchとなにがちがうの?
一番の特徴は、作ったゲームを市販されているゲーム機に入れて遊ぶことができるところです。
スイッチサイエンスなどで対応機種を購入することができます。
また、ゲーム機は自作することもできます。
「ゲーム機」も作って遊ぼう!MakeCode Arcade
https://note.com/phillowcompiler/n/n797de5dfa44e
当初は英語でしたが、日本語にも対応されたので、小学生も遊ぶことができますね!
同じマイクロソフトなので「GitHub」とも連携でき、プロジェクトをArcadeから変更することも、GitHubから変更することもできるようになっています。他の人が作った拡張機能もGitHubのURLからArcadeに取り込むことができます。
Arcadeでアクションゲームを作ろう
###テスト用プロジェクトを開こう
背景やキャラクターはArcadeにもともと入っている素材を使うこともできますし
自分で描いたり取り込んだりすることもできます。
今回はテスト用に、背景・タイルマップ・キャラクターを用意してみました。
https://makecode.com/_6TpPVqcD8ec7
ページを開いて「EditCode」をクリックすると、プログラム編集画面が開きます。
###キャラクターを表示しよう
プログラム編集画面を開くと
「最初だけ・背景画像を設定」というブロックが配置されています。
これが背景を表示するプログラムです。
ここに、キャラクターを追加してみましょう。
「スプライト」をクリックすると、関連するブロックが現れます。
「mySpriteをスプライト□…にする」というブロックを図のように組み合わせます。
###マップを作ろう
Arcadeは「タイルマップ」を使って、ステージを作ることができます。
「シーン」カテゴリから「タイルマップ□を設定する」を取り出し、組み合わせます。
□をクリックすると、タイルマップ編集画面が開きます。
左のツールボックスをクリックでもツール変更できますが、ショートカットにも対応しています。
- B:ペンツール
- G:バケツツール
- E:消しゴムツール
- H:ハンドツール
- Alt:スポイト
などです。
できたら完了をクリックします。
###キャラクターを十字キーで動かそう
「コントローラー」カテゴリの「mySpriteをボタンで動かす」を組み合わせます
キャラクターが十字キーで動くようになりました。
でも空中でウロウロしてしまいます。
###キャラクターに重力をつけよう
キャラクターのパラメータを変えるには
「スプライト」カテゴリの「set mySprite x to 〇」ブロックを使います。
組み合わせて「set mySprite ay to 300」となるように変更します。
キャラクターが下に落ちていくことを確認できます。
###タイルマップに壁を設定しよう
キャラがタイルマップの壁や床にぶつかるようにします。
さっき設定したタイルマップを開きます。
「壁アイコン」をクリックして壁編集モードにします。
壁モードになったら、ペンツールで、壁や床に設定したいところを赤く塗ります。
キャラが地面に立てるようになりました。
###キャラがジャンプできるようにしよう
今のままでは、上キーを押すとフワフワ浮かんでしまうので
左右キーで移動・Aキーでジャンプするようにしてみます。
さっき組み合わせた「mySpriteをボタンで動かす」の⊕ボタンをクリックすると
vxとvyを入力できるようになります。
上下を動かなくしたいので、vyを0に設定します。
これでキャラクターがジャンプできるようになりました。
####地面にいる時だけジャンプしてほしい
このままだと、連続でAボタンを押すと空中でもジャンプできてしまいます。
「論理」カテゴリの「もし○○なら」と
「シーン」カテゴリの<mySpriteが○○の壁に当たった>を組み合わせて、図のように配置します。
これでキャラが下の壁(地面)に当たったときだけ、ジャンプするようになりました。
###キャラがステージからはみ出ないようにしたい
「シーン」カテゴリの下の方にある
「カメラでスプライトを追う」を使うと、キャラの移動に合わせてステージがスクロールするようになります。
###キャラをアニメーションさせたい
「高度なブロック」「拡張機能」をクリックすると、様々な拡張機能を追加することができます。
####アニメーションを止めたい
歩いていない時には、アニメーションを止めておきます。
「右ボタンが**離した**時」と「アニメーションを終了」を組み合わせます。
このままだと、歩くモーションのまま止まってしまうので
「スプライト」カテゴリの「mySpriteの画像を□にする」ブロックで、止まっている画像にしておきます。
####動きにあわせてアニメーションを追加
上記の方法で、どのキーが押されたときに、どのアニメーションをするかを割り振ることができます。
また、しゃがみなどはアニメーションがいらないので「mySpriteの画像を□にする」で画像を変えるだけでOKです。
キーが離された時に、画像をリセットするのを忘れないようにします。
###ゲームオーバーとゲームクリア
####特定のタイルに触れるとゲームオーバーにする
タイルマップに「触れてはいけないタイル」を置きます。
GalleryでもMyTileでもなんでもいいですが、ここでは赤色タイルを作って置きました。(+ボタンでタイルを追加できます)
これで、赤いタイルに触れると、「YOU LOSE」と表示されるようになりました。
####同じ方法でゲームクリアを作る
こんどは、ゴールに設定するタイルを、マップの上におき
そのタイルに触れたらゲームクリアになるようにします。
###敵を追加しよう
####敵の出現場所を決める
まずは、敵が出てくる場所を決めましょう。これもタイルマップを使うとラクに設定できます。
敵が出現するタイルを決め、配置します。
ここでは草むらタイルを敵の出現タイルとしました。
####敵をたくさん登場させる
「ループ」カテゴリの「配列listの値をvalueに入れてくりかえす」ブロックに
「シーン」カテゴリの(すべての□位置の配列)を組み合わせます。
listに近づけると、配列が組み合わせられます。タイルは、草むらのタイルを選びます。
####敵の場所を設定する
草むらタイルの場所はvalueに入ってきます。これを使って場所を設定します。
「シーン」カテゴリから「mySpriteをタイルマップ列行の上に配置」を組み合わせます。
変数名をmyEnemyに変更し、valueをドラッグして列行に組み合わせます。
これで、タイルの場所にmyEnemyが移動するようになりました。
####敵の速度・跳ね返りなどを調整する
敵の画像サイズによって、出てくる位置が思っている場所と違うことがありますので
「change myEnemy y by 〇」のブロックなどを使って微調整します。
###ここまでのサンプル
下記のURLからここまでのプログラムを確認できます。
https://makecode.com/_MkMLkTKmfTYp
ジャンプモーションやステージの切り替えなどは今回やっていませんが
ステージ番号を変数で管理すれば簡単に作れると思います。
ステージを増やしたり、色々な敵を追加したりして試してみて下さいね。