スクラッチプログラミング

3-6 チャレンジ

バッターがボールを打つ

アニメーションの練習として、来たボールをバッターが打ち返すプログラムを作成しましょう。

ステップ1

必要な背景とスプライトをプロジェクトに読み込みます。

  1. [ファイル]->[新規]を選択して、新しいプロジェクトを作成し、プロジェクト名をバッティングと入力します。
  2. [スプライトライブラリ]からネコのスプライトを削除し、BatterとBaseBallをプロジェクトに読み込みます。
  3. [背景ライブラリ]からBaseBall2をプロジェクトに読み込みます。
  4. 下図を参考に、バッターとボールをドラッグして位置決めをします。

ステップ2

ボールのコードから作成します。そのためには、[スプライトリスト]でボールのスプライト(BaseBall)をクリックして選択し、その状態のまま[コード]タブをクリックします。[コードエリア]の右上端にはボールの絵が表示されています。これは、今開かれている[コードエリア]は、ボールのスプライトに適用するコードブロックを追加するためのものだということを示しています。

  1. イベントブロックとして[イベント]->[緑の旗が押されたとき]コードブロックをドラッグ&ドロップします。
  2. [見た目]->[表示する]コードブロックを(1)の下にドラッグ&ドロップして吸着させます。
  3. ボールはこの後、場外に出して非表示にするので、2回め以降のプログラムの実行に備えて、ここで表示状態にしておきます。

  4. ボールが大きすぎるので、サイズを小さくします。そのためには、[見た目]->[大きさを(100)%にする]コードブロックを(2)の下にドラッグ&ドロップし、100を半角の50にします。これによりボールは半分の大きさになります。
  5. ボールのスタート位置を決めます。スプライトの位置は[動き]->[x座標を( )、y座標を( )にする]コードブロックで設定できます。x座標を-225、y座標を37にします。
  6. 座標についてよく分からない場合は「2-1 動かしてみよう!」を参照してください。

  7. 動作を確認してみましょう。[緑の旗]ボタンをクリックしてプログラムを実行します。ボールが小さくなって、指定位置に移動します。

ステップ3

ボールにアクションをつけます。

  1. ボールをドラッグして、バッターが振ったバットがボールに当たると思われる位置(バッタの少し左あたりです)にドロップします。
  2. [動き]->[(1)秒でx座標を( )に、y座標を( )に変える]コードブロックを(4)のコードブロックに吸着させます。秒数の1はそのまま、x座標を56、y座標を55あたりに変更します。
  3. ボールをまたドラッグして、今度はレフト方向へのホームランボールとして、画面から消えていく寸前の位置にドロップします。
  4. また>[(1)秒でx座標を( )に、y座標を( )に変える]コードブロックをドラッグして、(2)のコードブロックの下に吸着させます。x座標は-231、y座標は145程度です。
  5. ボールが場外に飛んでいくように、[見た目]->[隠す]コードブロックを(4)の下に吸着させます。
  6. [緑の旗]ボタンをクリックして動作を確認します。ボールがステージ左端外から現れて右へ進み、バッターの少し左のところでUターンして、左へ進んで、ステージの外に消えます。

ステップ4

バッターにアクションをつけます。バッターは打つときのフォーム(姿勢)が変化するので、バッターに用意されているコスチュームを変更することで、バッティングフォームを表現します。

  1. [スプライトリスト]でバッターのスプライト(Batter)をクリックして選択します。[コードエリア]は空白で右上端にバッターの絵が表示されます。これはBatetrスプライトにはまだコードブロックが適用されていないことを示しています
  2. [コスチューム]タブをクリックします。Batterスプライトを構成するコスチュームが表示されます。
    コスチュームには、batter-a、batter-b、batter-c、batter-dの4つが用意されています。

  3. これらをパラパラマンガの要領で、左から右に素早く変更すると、スイングするように見えます。

  4. [コード]タブをクリックして、バッターに適用するコードブロックのスクリプトを作成しましょう。そのためには、[スクリプトリスト]で[Batter]をクリックして選択し、左上の[コード]タブをクリックして、Batterスプライトの[コードエリア]を表示します。これは、[コードエリア]の右上端にバッターの絵が表示されていることで確認できます。
  5. スクリプトは次のように作成します。

  6. [緑の旗が押されたとき]コードブロックは[イベント]にあり、[( )秒待つ]は[制御]にあります。コードブロックは種類ごとに色分けされています。[コスチュームを( )にする]は紫色なので、[見た目]にあります。それぞれ自分で探して、バッターのスクリプトを作成してみてください。

  7. スクリプトを確認し、間違いないようなら、[緑の旗]ボタンをクリックしてプログラムを実行します。画面左からボールが飛んで来て、それをバッターがスイングして打ち返すように見えれば成功です。

打ち返しているように見えないときには、ボールの座標やバッターの待つ時間を変えたりして、調整します。

ボールのスプライトをクリックして、ボールのスクリプトを表示します。ボールは座標(-225, 37)からスタートし、1秒かけて(56, 55)に移動し、また1秒かけて(-231, 145)に移動します。ボールはこのスクリプトによって、[緑の旗]ボタンがクリックされると、まず右へ移動し、1秒後に向きを変えて左へ移動して、消えます。

バッターのスイングは、ボールのこの動きに合わせ、間をおいてコスチュームを変更することで作成します。下図はボールの動きとバッターのコスチュームの変更を、経過時間で並べたものです。ここから、ボールがバットに当たるのは0.9秒後だと分かります。

ただしこれが正解ではありません。ボールの位置によっては打ち返しているように見えないかもしれません。また秒数を短くすると、バッターのスイングスピードが速くなるので、打ち返したボールのスピードも速くした方がそれらしく見えるかもしれません。

ステップ5

ボールを打ったときの効果音を入れましょう。音は、前にやったように、音のライブラリから読み込み、[コード]タブの[音]にあるコードブロックを使って再生します。打球音のコードブロックはステージではなく、スプライトに適用するのが適切ですが、今の場合、ボールかバッターか、どちらがより適切でしょう?
両方テストして、比べてみましょう。

ボールに適用

  1. [スプライトリスト]でボールをスプライトを選択します。
  2. <ボールのスプライトの[音]タブをクリックし、左下端のスピーカーアイコンから[虫メガネ]を選択して音のライブラリを表示します。/li>
  3. スポーツの音に絞りたいので、[スポーツ]ボタンをクリックし、そこから[Tennis Hit]をクリックしてプロジェクトに読み込みます。
  4. 再生ボタンをクリックして試聴します。良ければ[コード]タブをクリックし、ボールのスクリプトを表示します。
  5. [音]にある[(Tennis Hit)の音を鳴らす]をコードエリアにドラッグします。
  6. [(Tennis Hit)の音を鳴らす]コードブロックを挿入するのは、理屈で考えると、2つの[(1)秒でx座標を…]コードブロックの間です。なぜなら、ボールはこの2つのコードブロックの間で向きを変える(反転する)からです。下の方の[(1)秒でx座標を…]コードブロックを下にドラッグして、スクリプトを切り離し、上の方の[(1)秒でx座標を…]コードブロックに[(Tennis Hit)の音を鳴らす]を吸着させます。
  7. 下の方の[(1)秒でx座標を…]コードブロックを上にドラッグして、[(Tennis Hit)の音を鳴らす]に吸着させます。
  8. [緑の旗]ボタンをクリックして、プログラムを再生します。打球音らしきものが鳴って、打ち返しているようには見えます。

バッターに適用

次はバッターのスプライトに音を加えてみましょう。Tennis Hitの音は一度読み込んではいますが、バッターのスプライトに改めて読み込む必要があります。

理屈からいうと、バットにボールが当たるのは、コスチュームがbatter-cに変わった直後です。ボールのスプライトの時と同じ要領で、バッターのスクリプトに打球音のコードブロックを挿入します。

[緑の旗]ボタンをクリックしてプログラムを実行します。もしかするとボールを2度打ちするような音がするかもしれません。ボールに適用した場合でもバッターに適用した場合でも、さほど変わるように見えないので、どちらか一方を削除すればよいでしょう。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です