スクラッチ
サッカーゲームPK戦を作ろう シュートしよう編(2/6)
前回は必要なスプライトを準備しました。
第2回では、それらを使い、
方向を選んでゴールにシュートする部分を作ります。
(解説まとめはこちら)
www.papa-sensei.com
[目次]
選手スプライトを配置しよう
まずは、ステージ上に選手やボールのスプライトを配置しましょう。
今回使うのは、選手・ボール・キーパー・レフェリーです。
それぞれの位置や大きさは次の通りです。
スプライト | X | Y | 大きさ | 向き |
---|---|---|---|---|
矢印で方向を選ぼう
次に、方向を選ぶ矢印と下地を表示します。
まずは方向下地と矢印を配置します。
特に大きさや位置の指定はないので、好きな位置に配置してください^^
遊びやすいように画面下くらいに置くのが良いでしょう。
続いて表示するブロックの動きを作っていきます。
下地の表示
まずは矢印の下に表示する下地のスプライトです。
下地は、シュートする時・キーパー操作する時で表示を変える必要があります。
ブロックの動きとしては、
シュートする時・キーパー操作する時でそれぞれコスチュームを変えます。
シュート準備:「シュートを決めろ!」のコスチューム表示
キーパー準備:「キーパーを操作しろ!」のコスチューム表示
同時に、選手などのスプライトよりも上に表示されて欲しいので、
「最前面」へ移動するブロックも追加します。
また、下地などは使い終わったら表示を消す必要もあるため、
「方向を消す」イベントを受け取ったら隠す動きも用意しておきます。
矢印表示
次に矢印ボタンの動きです。
まずは、選んだ方向を保持しておくための変数を作ります。
「えらんだ方向」変数の中に、矢印で選んだ方向を入れていきます。
ブロックの動きとしては、方向下地と同じで、
「方向ひょうじ」というイベントを受け取ったら表示、消すイベントを受け取ったら消す。
そして、スプライトが押された(方向が選択された)ら、選んだ方向を変数の中に入れて、
「方向けってい」のイベントを送ります。
上の動きを、左・真ん中・右の矢印それぞれに追加していきます。
選んだ方向だけは、それぞれの矢印の向きによって変えます。
方向 | 値 |
---|---|
左 | 0 |
真ん中 | 1 |
右 | 2 |
これで方向を選ぶ動きは完成です。
選んだ方向にシュートしよう
続いて、選んだ方向にシュートできるようにします。
背景
まずは背景のプログラムです。
スタートしたら、まずは「シュート準備」のイベントを送り、方向下地などを表示します。
矢印が押され、「方向けってい」のイベントを受け取ったら、
方向表示を消して、「シュート」します。
またこの時、「ボールの方向」変数を用意し、選んだ方向を入れておきます。
このボールの方向を見て、ボールを飛ばしていきます。
ボールの動き
シュートする上で最も大切な、ボールが飛んでいく動きです。
選んだ方向によって、左・真ん中・右 へとボールを飛ばします。
ボールが飛んでいく位置
ボールは初期位置(x:0, y-112)から、それぞれ次の位置に飛ばします。
向き | X | Y |
---|---|---|
左 | -60 | 20 |
真ん中 | 0 | 60 |
右 | 60 | 20 |
ボールの移動には「○秒でX,Yを変える」ブロックを使います。
ボールのプログラム
それではボールのプログラムです。
背景から「シュート」のイベントを受け取ったら、 ボールの方向の変数の中身を見て、
・左(0) なら 1秒で(-60, 20) に移動する
・真ん中(1) なら 1秒で(0, 60) に移動する
・右(2) なら 1秒で(60, 20) に移動する
動きを作ります。 これで、方向によってボールが移動できるようになりました。
また、ボールは何度も使うので、位置や表示を元に戻すためのプログラムも用意しておきます。
選手のプログラム
シュートをうつときに、選手がボールを蹴る動きをするようにします。
選手のコスチュームには、蹴る前・蹴るの2つのコスチュームがあります。
「シュート」のイベントを受け取った時に、蹴るコスチューム(ここでは先行シュートという名前)にします。
また、選手も何度も使うため、コスチュームを戻すリセット処理も作っておきます。
レフェリーのプログラム
最後にレフェリーのプログラムです。
レフェリーは、方向が決まったら、ホイッスルを鳴らして試合を開始します。
方向決める → (1秒待つ) → ホイッスル吹く → (鳴り終わるまで待つ) → シュート
レフェリーは「ホイッスル」のイベントを受け取ったら、コスチュームをreferee-c(手をあげる動き)に変えて、whistleの音を鳴らします。
この時、音が鳴り終わるまで待ちたいので「終わるまで」のブロックを使います。
ボール、選手と同様に状態を元に戻すためのリセット処理も作ります。
最後に背景のプログラムに「ホイッスル」のイベントを送るブロックを追加します。
「シュートの前」に「ホイッスルを送って待つ」ブロックを追加します。
ホイッスルの音が鳴り終わるまで待ちたいので、イベントを送る側も「送って待つ」ブロックにします。
合わせて、スタートした時に一度それぞれの状態を元に戻す「リセット」イベントも送るようにします。
これでシュートをうつ動きが完成しました!
今回までの動き
方向を選択して、その方向にシュートができるようになりました。
使うスプライトが増えてくると、それぞれの動き・イベントを送る、受け取る関係、
また、状態を元に戻すためのリセットなどの処理も大事になってきます。
それぞれのスプライトの動きや流れを考えながら作りましょう^^