今回つくるゲーム
難易度
今回はスクラッチでアンダーテールのサンズ戦を再現していきます。サンズはGルートの限定ボスで、強すぎて攻略が難しいことで有名です。ここではサンズ戦の0ターン目、1ターン目を作っていきます。ここまでできれば、自分でいろいろカスタマイズしていけると思います。
まずは実際にゲームをプレイしてみてください。上下矢印キーでソウルを操作して攻撃を避けてください。
こちらの動画を見てから記事を読むことをお勧めします。チャンネル登録もよろしくお願いします!
はじめに
まず、以下をリミックスしてください
こちらにはゲームを作るのに必要な素材が揃っています。
![](https://i1.wp.com/bingo-ojisan.xyz/wp-content/uploads/2022/06/スクリーンショット-2022-06-04-12.04.48-1024x561.png?resize=1024%2C561&ssl=1)
ピクセルアートのネコを自分で作ってみたい人はこちらのブログも参考にしてください
ソウルの動き
まずはソウルの動きを作っていきます。このゲームの特徴は、サンズの攻撃パターンによって重力があるときとないときがあることです。ソウルのスプライトに以下のコードを書いていきます。
![](https://i2.wp.com/bingo-ojisan.xyz/wp-content/uploads/2022/06/スクリーンショット-2022-06-04-13.18.28.png?resize=826%2C459&ssl=1)
![](https://i1.wp.com/bingo-ojisan.xyz/wp-content/uploads/2022/06/スクリーンショット-2022-06-04-8.12.21.png?resize=827%2C528&ssl=1)
![](https://i1.wp.com/bingo-ojisan.xyz/wp-content/uploads/2022/06/スクリーンショット-2022-06-04-9.40.59-1.png?resize=846%2C389&ssl=1)
ここまで書けたら実際に動かしてみましょう。
重力あり=0のときと重力あり=1に変更した場合、以下の様に動きがかわることを確認しましょう。
攻撃1(下に叩きつける)
ではまず1つ目の攻撃から作っていきます。
ゲーム管理に以下のようにコードを書きます。
![](https://i0.wp.com/bingo-ojisan.xyz/wp-content/uploads/2022/06/スクリーンショット-2022-06-04-9.54.55.png?resize=343%2C275&ssl=1)
次に、攻撃1のスプライトに移動して以下のコードを書きます。
ソウルを下に叩きつけたあと、下から12本の骨がにょきっと出てくるようにします。
![](https://i1.wp.com/bingo-ojisan.xyz/wp-content/uploads/2022/06/スクリーンショット-2022-06-04-15.44.48.png?resize=826%2C634&ssl=1)
では、実際に動かしてみましょう。以下のように動けば成功です。
攻撃2(流れるウェーブ)
次に右側から骨がウェーブ状に流れてくる攻撃を作っていきます。
まず、ゲーム管理のスプライトに移動し、以下のようにコードを追加します。
![](https://i2.wp.com/bingo-ojisan.xyz/wp-content/uploads/2022/06/スクリーンショット-2022-06-04-10.01.44-1.png?resize=286%2C250&ssl=1)
次に攻撃2のスプライトに移動して以下のコードを書きます
ウェーブ状にするために三角関数(sin)を使っていますが、考え方が難しいのでまずはそういうもんだと思って進めてください。
![](https://i1.wp.com/bingo-ojisan.xyz/wp-content/uploads/2022/06/スクリーンショット-2022-06-04-10.01.58.png?resize=843%2C638&ssl=1)
注意)骨xと骨y変数を作るときは「このスプライトのみ」にチェックを入れるようにしてください。
![](https://i0.wp.com/bingo-ojisan.xyz/wp-content/uploads/2022/06/スクリーンショット-2022-06-04-16.34.32.png?resize=375%2C395&ssl=1)
![](https://i1.wp.com/bingo-ojisan.xyz/wp-content/uploads/2022/06/スクリーンショット-2022-06-04-16.34.37.png?resize=375%2C395&ssl=1)
この状態で実際に動かしてみてください。以下のような動きになれば成功です。
攻撃3(ビーム)
続いて3つ目の攻撃です。4匹の虫が現れて様々な角度からビームで攻撃してきます。
まずはゲーム管理のスプライトに移動し、以下のようにコードを書きます。
![](https://i2.wp.com/bingo-ojisan.xyz/wp-content/uploads/2022/06/スクリーンショット-2022-06-04-16.14.32.png?resize=396%2C337&ssl=1)
次に攻撃3のコードに移動して以下のようにコードを書きます。
![](https://i1.wp.com/bingo-ojisan.xyz/wp-content/uploads/2022/06/スクリーンショット-2022-06-04-10.05.36.png?resize=843%2C392&ssl=1)
![](https://i1.wp.com/bingo-ojisan.xyz/wp-content/uploads/2022/06/スクリーンショット-2022-06-04-10.04.51.png?resize=843%2C638&ssl=1)
![](https://i0.wp.com/bingo-ojisan.xyz/wp-content/uploads/2022/06/スクリーンショット-2022-06-04-10.06.12.png?resize=846%2C547&ssl=1)
注意)虫番号の変数を作るときは「このスプライトのみ」にチェックを入れるようにしてください。
![](https://i0.wp.com/bingo-ojisan.xyz/wp-content/uploads/2022/06/スクリーンショット-2022-06-04-16.34.18.png?resize=269%2C283&ssl=1)
第1弾〜第3弾のビームのブロックの意味が難しいと思いますが、以下の図のように、ブロックの引数の機能を利用して虫ごとの位置と向きを定義しやすくしているのです。引数の考え方は初めは難しいと思いますが、使える様になればコードをとてもシンプルに書けるようになりますので是非マスターしてください。
![](https://i0.wp.com/bingo-ojisan.xyz/wp-content/uploads/2022/06/スクリーンショット-2022-06-04-16.29.02-1024x482.png?resize=1024%2C482&ssl=1)
コードが書けたら実際にプレーしてみてください。
以下のように動けば成功です。
攻撃4(連続ジャンプ)
続いての攻撃は両側から骨が迫ってきます。タイミングよくジャンプをして骨をよけます。
これまでどおり、ゲーム管理のスプライトに移動し、以下のようにコードを追加します。
![](https://i0.wp.com/bingo-ojisan.xyz/wp-content/uploads/2022/06/スクリーンショット-2022-06-04-10.20.50.png?resize=355%2C429&ssl=1)
次に、骨の動きを作っていきますが、以下のように、左からの攻撃と右からの攻撃に分けてスプライトを作ります。枠の左右に骨を並べてスクロールさせていきます。
![](https://i0.wp.com/bingo-ojisan.xyz/wp-content/uploads/2022/06/スクリーンショット-2022-06-04-17.59.33-1024x566.png?resize=1024%2C566&ssl=1)
まず、攻撃4−1のスプライトに移動して以下のコードを書きます。
![](https://i1.wp.com/bingo-ojisan.xyz/wp-content/uploads/2022/06/スクリーンショット-2022-06-04-17.41.03.png?resize=848%2C561&ssl=1)
つぎに、攻撃4−2に以下のようにコードを書きます。
![](https://i1.wp.com/bingo-ojisan.xyz/wp-content/uploads/2022/06/スクリーンショット-2022-06-04-17.40.56.png?resize=848%2C561&ssl=1)
実際に動きを確認してみてください。
以下のように動けば成功です。
HP(ヒットポイント)を作る
さいごにHPを作ります。はじめに1000のHPを用意し攻撃を受けるとHPが減っていくようにします。ソウルが白色に触れると攻撃を受けたということにします。
ソウルのスプライトに移動し、以下のようにコードを追加します。
![](https://i2.wp.com/bingo-ojisan.xyz/wp-content/uploads/2022/06/スクリーンショット-2022-06-04-13.19.00.png?resize=826%2C553&ssl=1)
以下のように白色に触れるたびにHPが減れば成功です。
すべてのコード
これですべてのプログラムが終了です。
今回は1ターン目までの解説ですがぜひ2ターン目以降も作ってみてください。
すべてのコードはこちらから確認できます
コメント
ジャンプがずっとできてしまうので、体力の変数を作り、上キーが押されたら、体力を8にする、上キーが押されたではない、または、体力<1まで繰り返すの中に、重力を5にする→体力を-1ずつ変えるとやると、理想的なジャンプになるかと思います。(これはあくまでも本家を再現しているわけで、これはScratchなので、オリジナリティーとして、そのままでもいいと思います。長文失礼しました。)
ありがとうございます!実はちゃんとアンダーテールやったことなくて正しい動きがわかってないんですよね。。是非正しく再現してみてもらえるとうれしいです!